状況:リモートアクセスでカスタムエラーページを表示するにはどうすればよいですか?
エラーをユーザーに表示するには、カスタムエラーページを使用します。
Global.asax
ファイルではApplication_Error
フックを使用して、すべてのエラーをカスタムエラーページErrorController
に転送します。これは~/Error/Index
です。
protected void Application_Error(Object sender, EventArgs e)
{
var lRedirectController = "Error";
var lRedirectAction = "Index";
[...]
var lStatusCode = ?; // will be set dependent on the exception. E.g. 403
HttpContextWrapper lContextWrapper = new HttpContextWrapper(Context);
RouteData routeData = new RouteData();
routeData.Values.Add("controller", lRedirectController);
routeData.Values.Add("action", lRedirectAction);
routeData.Values.Add("pStatusCode", lStatusCode);
routeData.Values.Add("pIsAjaxRequest", lContextWrapper.Request.IsAjaxRequest());
[...]
// execute error controller
using (ErrorController lController = new ErrorController())
{
RequestContext requestContext = new RequestContext(lContextWrapper, routeData);
lController.BaseExecute(requestContext);
}
Response.End();
}
ErrorController
Index
アクションに次のコードがあります:
public ActionResult Index(bool pIsAjaxRequest = false, string pMessage = null, int pStatusCode = 500, Exception pException = null, string pAdditionalInfo = null)
{
// assign the status code to the response header
Response.StatusCode = pStatusCode;
// [...]
// if it was an ajax request, return json, else the view
if (!pIsAjaxRequest)
{
// [...]
return View("Index", "_BlankPage");
}
else
{
// json response
}
}
ルートフォルダ内のファイルweb.config
が<customErrors mode="On"/>
のためノー宣言持ちをGlobal.asax
は、次のコードを持っています。私がそれを加えるかどうか、その振る舞いは同じです。
問題:私は私のローカルマシン上のエラーを実行すると、予想通り
、カスタムエラーページが表示されます。しかし、私は、私は、他のエラーページを取得し、ネットワーク経由でブラウザを介して他のマシンからアプリケーションを呼び出すとき:
質問:
私はリモートでのカスタムエラーページを表示することができますどのようにアクセス?
[こちら](https://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/displaying-a-custom-error-page)でお読みください。 -cs) – crowchirp
@crai:あなたが私の質問に「私はそれを付け加えてもしなくても、行動は同じです。さらに、あなたのリンクの背後にあるページはYSODについて話しています。私の質問でスクリーンショットを見ることができるように、それはYSODではありません。 – Simon
オクラホマ、それを持って、答えを見てください – crowchirp