0

我目前尝试在 wpf 客户端上进行干净的 wcf 数据服务异常处理。我有一个带有 ef4 模型和 sql 数据库以及 wpf4 客户端的简单数据服务。

我已经阅读了一些关于 wcf 数据服务异常处理的文章,并提出了一个解决方案,我可以解析收到的异常消息,该消息是格式良好的 xml。

文章: ADO.NET 数据服务:跨应用程序层的高效错误处理

问题是,我的DataServiceQueryException的消息包含浏览器中错误页面的 HTML 而不是 XML。所以解析器无法解析 XDocument 并简单地返回原始异常

在服务器端我抛出

throw new DataServiceException(
    (int)HttpStatusCode.Unauthorized, 
    ExceptionMessages.ErrorAuthCommon);

哪里错了?

提前致谢

编辑

以下是一些代码片段

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyDataService : DataService<MyEntities>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
         config.UseVerboseErrors = true;

异常被抛出CustomAuthProvider.Authenticate(application.Context)

public class BasicAuthenticationModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.AuthenticateRequest
           += new EventHandler(context_AuthenticateRequest);
    }
    void context_AuthenticateRequest(object sender, EventArgs e)
    {
        HttpApplication application = (HttpApplication)sender;
        if (!CustomAuthProvider.Authenticate(application.Context))
        {
            application.Context.Response.Status = "401 Unauthorized";
            application.Context.Response.StatusCode = 401;
            application.Context.Response.AddHeader("WWW-Authenticate", "Basic");
            application.CompleteRequest();
        }
    }
    public void Dispose() { }
}

在这里我注册我的IHttpModule

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="CustomAuthenticationModule" type="DataService.BasicAuthenticationModule">
    </modules>
</system.webServer
4

0 回答 0