C#.NET 2异常:外部组件抛出了异常

时间:2012-05-09 13:51:02

标签: c# .net-2.0

我在c#2应用程序中开发了。一个ASP .NET Web服务和一个使用Web服务的WinForms客户端。客户端分发给许多客户。对于其中一个客户,应用程序突然开始抛出以下异常:

External component has thrown an exception.
at System.Diagnostics.SharedPerformanceCounter.GetCounter(String counterName, String instanceName, Boolean enableReuse, PerformanceCounterInstanceLifetime lifetime)
at System.Diagnostics.SharedPerformanceCounter..ctor(String catName, String counterName, String instanceName, PerformanceCounterInstanceLifetime lifetime)
at System.Diagnostics.PerformanceCounter.Initialize()
at System.Diagnostics.PerformanceCounter.set_RawValue(Int64 value)
at System.Net.NetworkingPerfCounters.Initialize()
at System.Net.Configuration.SettingsSectionInternal..ctor(SettingsSection section)
at System.Net.Configuration.SettingsSectionInternal.get_Section()
at System.Net.ServicePointManager.set_Expect100Continue(Boolean value)
at #Neh.#hgh.#P0f(String[] args)

异常结束时的模糊(使用SmartAssembly 5)函数是客户端的主要功能,如下所示

public static void Main(string[] args) {
    try {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

        System.Net.ServicePointManager.Expect100Continue = false;
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Globals.Settings.NoWaitPrintJobs = true;
        Application.Run(new frmMain());
    }
    catch(Exception ex) {
        HandleUnhandledException(ex);
    }
}

从我理解的例外情况来看,它正在突破

System.Net.ServicePointManager.Expect100Continue = false;

应用程序不引用任何互操作组件,只引用其他托管dll。它还使用shell32.dll中的本机函数

[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out] StringBuilder lpszPath, int nFolder, bool fCreate);

从静态对象调用主窗体加载事件。

Globals.Settings.InitLocalFiles();

我还不知道客户的电脑规格。我认为他有Windows XP。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看起来运行客户端的用户帐户没有正确的权限,使用性能计数器

请参阅'UnauthorizedAccessException' - 'Global\.net clr networking'

这使得网络类不使用性能计数器。