小编coo*_*tty的帖子

HTTPError异常在服务器上运行webapi与在本地运行时不显示消息

我有一个在IIS7.5服务器上运行的webapi.它有3个控制器,所有3个控制器都可用于从我的应用程序中的调用访问webapi.

我有一个错误,我的控制器的基类将其功能公开,而不是保护.这导致服务器抛出内部服务器错误500(因为抛出了无效的异常"找到了与请求匹配的多个操作").我花了一段时间来深入研究这个,因为它从未触发过我的webapi的日志记录.从这个dicussion 这里,我发现这是发生错误是发生之前的Application_Error功能会赶上它来记录它.所以我将下面的代码添加到我的webapi的global.asax中,现在我可以记录这样的错误.

但是,我现在的问题是,当我在运行我的webapi的本地机器上导致内部服务器错误500与上面完全相同时,我得到了一个日志,我希望看到它的"ExceptionMessage""找到匹配的多个操作"请求"拼写为内部服务器错误的原因.但是当将这个确切的代码部署到服务器并从那里使用webapi时,我的日志只显示"消息":"发生了错误"并且没有向我显示"ExceptionMessage",即使我可以看到异常是使用PerfView抛出.我只需要能够获取我的服务器日志以显示与本地日志显示的信息相同的信息.

public class ResponseExceptionTrapper : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request,
        CancellationToken cancellationToken)
    {
        return base
            .SendAsync(request, cancellationToken)
            .ContinueWith(response =>
            {
                var result = response.Result;
                if (!result.IsSuccessStatusCode)
                {
                    var exceptionResult = string.Format(
                         "Response exception: \r\n Path({0}) \r\n Status({1}) \r\n",
                         request.RequestUri,
                         result.StatusCode);

                    if (result.Content != null)
                    {
                        var exceptionReadTask =
                               result.Content.ReadAsStringAsync();

                        exceptionReadTask.Wait();
                        exceptionResult += "Message:" +
                                          exceptionReadTask.Result;

                    }

                    // Do something appropriate with exceptionResult
                    exceptionResult.Log();
                }

                return result;
            }, cancellationToken);
    }
}
Run Code Online (Sandbox Code Playgroud)

服务器日志示例:

Timestamp: 4/24/2014 …
Run Code Online (Sandbox Code Playgroud)

c# iis-7.5 httpcontent

29
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

httpcontent ×1

iis-7.5 ×1