Windows

輸入字元串的格式不正確。mscorlib

  • July 3, 2012

我在 Vista Business 上執行的第 3 方軟體之一遇到了這個奇怪的問題。我有一個使用者,在使用使用者的憑據進行本地登錄時,使用該第 3 方軟體的任何人都會收到該錯誤:

Error Report generated on 7/2/2012 9:46:57 AM
=======================================================================================

Product Version : 9.2.1.0
OS : Microsoft Windows NT 6.0.6002 Service Pack 2

Environment Variables :
=======================

Path : C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
TEMP : C:\Users\xxxxxx\AppData\Local\Temp
SESSIONNAME : Console
PATHEXT : .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
USERDOMAIN : xxxxxxxx
PROCESSOR_ARCHITECTURE : x86
SystemDrive : C:
TRACE_FORMAT_SEARCH_PATH : \\NTREL202.ntdev.corp.microsoft.com\4F18C3A5-CA09-4DBD-B6FC-219FDD4C6BE0\TraceFormat
APPDATA : C:\Users\xxxxxxx\AppData\Roaming
windir : C:\Windows
LOCALAPPDATA : C:\Users\xxxxxxx\AppData\Local
TMP : C:\Users\xxxxx\AppData\Local\Temp
USERDNSDOMAIN : xxxxxxx.LOCAL
USERPROFILE : C:\Users\xxxxxx
ProgramFiles : C:\Program Files
FP_NO_HOST_CHECK : NO
HOMEPATH : \
COMPUTERNAME : xx-xxxx-x
HOMESHARE : \\server\home\xxxxxxxx
ProgramData : C:\ProgramData
NUMBER_OF_PROCESSORS : 1
PROCESSOR_IDENTIFIER : x86 Family 15 Model 127 Stepping 2, AuthenticAMD
USERNAME : xxxxxxx
SystemRoot : C:\Windows
ComSpec : C:\Windows\system32\cmd.exe
LOGONSERVER : \\server
DFSTRACINGON : FALSE
CommonProgramFiles : C:\Program Files\Common Files
PROCESSOR_LEVEL : 15
PROCESSOR_REVISION : 7f02
ALLUSERSPROFILE : C:\ProgramData
PUBLIC : C:\Users\Public
OS : Windows_NT
HOMEDRIVE : H:
=======================

Machine Name : xx-xxxx-x
User Domain : xxxxxxxx
User : xxxxxxx
.NET Version : 2.0.50727.4016
Memory : 41291776

Error Details
=============

Input string was not in a correct format.

mscorlib

Stack Trace
===========

  at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
  at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
  at Thermo.SampleManager.Client.ExplorerApplicationService.LoadSettings()
  at Thermo.SampleManager.Client.ExplorerApplicationService.Setup(IClientApplicationServiceSite site)
  at Thermo.Framework.Client.ClientApplicationServiceCache.AddService(String serviceName, Type serviceType, IClientApplicationService service)
  at Thermo.Framework.Client.ClientApplication.GetService(Type serviceType)
  at Thermo.Framework.Client.ClientApplication.HandleApplicationServiceMessage(ApplicationServiceMessage message)
  at Thermo.Framework.Client.ClientApplication.TransportMessageReceived(Object sender, MessageEventArgs e)
  at Thermo.Framework.Core.Transport.OnMessageReceived(Message message)
  at Thermo.Framework.Core.Transport.ConversationMessageReceived(Object sender, MessageEventArgs e)
  at Thermo.Framework.Core.Conversation.OnMessageReceived(Message message)
  at Thermo.Framework.Core.Conversation.HandleBundle(Bundle bundle)

============================================================

現在,如果我在本地登錄到同一台 PC,我不會收到該錯誤,該使用者也不會。我還應該提到我有管理員權限。

這是我到目前為止所做的:

  1. 刪除本地配置文件並重新添加它
  2. 解除安裝並重新安裝軟體
  3. 試圖在所有 .net 相關目錄中取消註冊和重新註冊 mscorlib.dll

正如我之前所說,客戶端在 Vista Business 上執行,軟體的後端駐留在虛擬化的 Windows Server 2003 上。

有什麼建議麼?請幫忙!

mscorlib 顯然不是問題,它是 .Net 的核心,因此大多數錯誤最終都會追溯到它,即使它們實際上源自第三方的程式碼。在這種情況下,它明確告訴您錯誤在 Thermo.Framework 中,試圖解析一個無法解析為 int 的字元串(可能是一個空字元串,如果它無法獲取正確的值),而無需為愚蠢而煩惱諸如錯誤處理之類的小事。如果他們仍然生活在一個人人都是管理員的世界中,那麼他們就已經落後於時代了,你需要告訴他們修復他們的錯誤。

我看到您在上一個問題中也被建議這樣做。

但是有一些方法可以找出它失敗的地方。從procmon開始並蒐索 DENIED,有一半的時間您會看到更改權限所需的內容。如果這不能說明問題,您可以更深入地使用windbg(使用 gflags,windbg 的一部分,從 excel 開始)實際擷取發生的異常並查看發生了什麼,但這甚至非常複雜對於退伍軍人。

說真的,讓他們修復他們的錯誤,這將為您節省大量時間。

引用自:https://serverfault.com/questions/404208