HandleException未执行

时间:2014-03-17 04:11:36

标签: wcf exception-handling odata wcf-data-services

我正在研究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!

1 个答案:

答案 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逻辑中添加异常,也会调用处理程序方法。