gpt4 book ai didi

c# - Azure 不会在 HttpException 中传递我的自定义消息

转载 作者:行者123 更新时间:2023-12-03 02:58:49 26 4
gpt4 key购买 nike

我在 Azure WebApp 中有一个 REST API。当 POST 发送到我的端点时,我会进行一些检查,如果需要,我会抛出 HttpException:

throw new HttpException(400, msgInfo);

其中 msgInfo 是我的自定义消息。在我使用 Visual Studio 2015 的开发机器中,我的响应是:

{"Message":"An error has occurred.","ExceptionMessage":"[my custom message]","ExceptionType":"System.Web.HttpException","StackTrace":"..."}

现在我可以向用户显示有用的消息。

但在 Azure 上,响应只是:

{"Message":"An error has occurred."}

所以没有自定义消息。

这很可能是 Azure 中的设置。我知道它不应该显示我的完整堆栈跟踪,但它应该显示ExceptionMessage

在我的 Web.config 中,我有:

<system.web>
<customErrors mode="RemoteOnly" />
</system.web>

<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>

如何解决这个问题?

最佳答案

Asp.net Web api 对于如何在不同环境中显示错误详细信息有单独的配置。

在你身上HttpConfiguration ,有一个名为 IncludeErrorDetailPolicy 的属性。这是它可能的值(value)。

public enum IncludeErrorDetailPolicy
{
// Summary:
// Use the default behavior for the host environment. For ASP.NET hosting, usethe value from the customErrors element in the Web.config file.
// For self-hosting, use the value System.Web.Http.IncludeErrorDetailPolicy.LocalOnly.
Default = 0,

// Summary:
// Only include error details when responding to a local request.
LocalOnly = 1,
//
// Summary:
// Always include error details.
Always = 2,
//
// Summary:
// Never include error details.
Never = 3,
}

您可以按如下方式配置:

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCloudServiceGateway();

var config = new HttpConfiguration
{
IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always // Add this line to enable detail mode in release
};
WebApiConfig.Register(config);
app.UseWebApi(config);
}
}

更多详情可以引用这个thread .

此外,您可以设置<customErrors mode="Off"/> ,它指定禁用自定义错误。 detailed ASP.NET errors显示给远程客户端和本地主机。

关于c# - Azure 不会在 HttpException 中传递我的自定义消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50946112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com