AzureWebAppにRESTAPIがあります。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
。可能な値は次のとおりです。
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);
}
}
詳細については、このスレッドを参照してください。
また、<customErrors mode="Off"/>
カスタムエラーを無効にすることを指定するを設定することもできます。詳細なASP.NETエラーはリモートクライアントにし、ローカルホストに表示されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加