Windows
輸入字元串的格式不正確。mscorlib
我在 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,我不會收到該錯誤,該使用者也不會。我還應該提到我有管理員權限。
這是我到目前為止所做的:
- 刪除本地配置文件並重新添加它
- 解除安裝並重新安裝軟體
- 試圖在所有 .net 相關目錄中取消註冊和重新註冊 mscorlib.dll
正如我之前所說,客戶端在 Vista Business 上執行,軟體的後端駐留在虛擬化的 Windows Server 2003 上。
有什麼建議麼?請幫忙!
mscorlib 顯然不是問題,它是 .Net 的核心,因此大多數錯誤最終都會追溯到它,即使它們實際上源自第三方的程式碼。在這種情況下,它明確告訴您錯誤在 Thermo.Framework 中,試圖解析一個無法解析為 int 的字元串(可能是一個空字元串,如果它無法獲取正確的值),而無需為愚蠢而煩惱諸如錯誤處理之類的小事。如果他們仍然生活在一個人人都是管理員的世界中,那麼他們就已經落後於時代了,你需要告訴他們修復他們的錯誤。
我看到您在上一個問題中也被建議這樣做。
但是有一些方法可以找出它失敗的地方。從procmon開始並蒐索 DENIED,有一半的時間您會看到更改權限所需的內容。如果這不能說明問題,您可以更深入地使用windbg(使用 gflags,windbg 的一部分,從 excel 開始)實際擷取發生的異常並查看發生了什麼,但這甚至非常複雜對於退伍軍人。
說真的,讓他們修復他們的錯誤,這將為您節省大量時間。