我正试图捕捉我的工作角色中所有未处理的异常.我尝试将try
- catch
块放入Run()
方法(如此处所示),但没有成功.
public override void Run()
{
try
{
base.Run();
}
catch (Exception ex)
{
Trace.TraceError("Unhandled Exception: {0}", ex);
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
该角色承载WCF服务,因此该Run()
方法中没有其他逻辑.还有另一种可能性来捕获此级别的异常吗?
更新1
澄清问题:角色self托管WCF服务(已初始化OnStart()
),其中某些操作是后台操作.当调用该服务并且该方法抛出意外异常时,我想抓住它将其写入日志.
解决方案:
显然它就像在普通的C#应用程序中一样:只需UnhandledException
像这样添加一个处理程序
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Run Code Online (Sandbox Code Playgroud)
在OnStart()
角色里面.我是如此专注于Azure,我认为这毕竟不起作用,我甚至没有尝试过:-)
在网络驱动器上运行时,我们的C++解决方案(调用.NET 4.0程序集)存在一个奇怪的问题.该解决方案使用NetTcpBinding托管多个WCF服务,其中一个具有非默认绑定配置.在部分信任下,非默认的NetTcpBinding本身是不可能的(请参阅堆栈溢出问题WCF NetTcpBinding何时需要在客户端上完全信任?),但解决方案在完全受信任的网络驱动器下运行.这适用于几台不同的计算机(Windows Vista和Windows 7)但在一台计算机上失败(Windows Vista)并抛出异常,
为"system.serviceModel/bindings"创建配置节处理程序时发生错误:该程序集不允许部分信任的调用方.(K:\ Somepath\Testing.exe.Config第6行)
如果解决方案确实在该计算机上部分信任下运行,那么这个例外就完全可以了,但它确实在完全信任的情况下运行.即使我检查完全信任代码也是如此.
我们用其中一台计算机双重检查了互联网选项 - 没有差异.
所有DLL文件和EXE文件都是强名称.
更新:
网络驱动器在特定计算机上完全信任(caspol.exe
).
我们应该寻找什么?
如果您需要其他信息,请告诉我们.
更新2: 我们仍然有这个问题,现在甚至在一台计算机上(Windows 7).所以它似乎与操作系统无关.
我导出了一个表(使用 EF Core 2.2 创建)bcp %database%.MyTable out MyTable.dmp -n -T -S %sqlserver%
。
在重新导入它时,bcp %database%.MyTable in MyTable.dmp -n -T -S %sqlserver%
我收到此错误:
SQLState = 37000, NativeError = 1934
Error = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]INSERT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations. …
Run Code Online (Sandbox Code Playgroud)