我正在研究WCF数据服务,我想在遇到自定义错误时放置自定义错误。通过我的研究,我指出覆盖HandleException方法,以便我可以捕获我将遇到的任何异常,但如果有错误,该方法不会被执行。我做错了什么?
这是我用来强制例外的示例代码。
throw new DataServiceException("Testing");
这是覆盖方法HandleException。
protected override void HandleException(HandleExceptionArgs args)
{
throw new DataServiceException("HandleException");
}
这是我的配置。
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
config.DataServiceBehavior.AcceptProjectionRequests = true;
config.UseVerboseErrors = true;
}
请helpppppp!
答案 0 :(得分:0)
你能告诉我们你把异常抛出的代码放在哪里了吗?
以下代码将其置于自定义Action中,可以成功调用Handler。
protected override void HandleException(HandleExceptionArgs args)
{
Console.WriteLine("hello");
using (FileStream fs = new FileStream("D:\\time.txt", FileMode.Append))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(DateTime.Now);
}
}
public static void InitializeService(DataServiceConfiguration config)
{
config.SetServiceOperationAccessRule("S1", ServiceOperationRights.All);
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
config.DataServiceBehavior.AcceptProjectionRequests = true;
config.UseVerboseErrors = true;
}
[WebGet]
public int S1()
{
throw new DataServiceException("ui1");
}
另外,如果我在IRequestHandler逻辑中添加异常,也会调用处理程序方法。