【问题标题】:Error executing child request for执行子请求时出错
【发布时间】:2012-11-12 12:46:11
【问题描述】:

在我的 MVC3 应用程序中,当我尝试处理超出最大请求的错误时,我收到了上述错误。

我正在处理应用程序级别的异常。我正在尝试重定向到位于视图共享文件夹中的错误页面。

如果请求大小超过限制,我正在使用下面的代码重定向到错误页面。

 this.Server.ClearError();
 this.Server.Transfer("~/Views/Shared/NotAuthorised.cshtml");

这是我遇到的错误。

执行 /SiteName/Views/Shared/NotAuthorised.cshtml 的子请求时出错

【问题讨论】:

  • 这里没有足够的信息让我们帮助您。 :(
  • @gdoron-请阅读更新后的文字。

标签: asp.net-mvc-3 exception global-asax


【解决方案1】:

根据 Microsoft 文档 (Error Executing Child Request" Error Message When You Use Server.Transfer or Server.Execute in ASP.NET Page),在出现应用程序级错误后,您无法使用 Server.Transfer。

Microsoft Internet 信息服务 (IIS) 分派 Server.Transfer 或 Server.Execute 请求到相应的 Internet 服务器应用程序编程接口 (ISAPI) 扩展 基于请求文件的扩展名。例如,一个请求 .aspx 页面被分派到 Aspnet_isapi.dll ISAPI 扩展名。

在请求被分派到适当的 ISAPI 扩展后, ISAPI 扩展不能调用另一个 ISAPI 扩展。您收到 “症状”部分中列出的错误消息,因为 处理对 ASP.NET 页面的请求的 Aspnet_isapi.dll 文件不能 将请求转发到处理对​​ ASP 的请求的 Asp.dll 文件 页面。

您可以像这样使用Response.Redirect(path):

Response.Redirect("Home/About");

【讨论】:

  • 这行得通,但这是另一种方法。 var routeData = new RouteData(); routeData.Values["控制器"] = "错误"; routeData.Values["action"] = "ErrorActionName"; IController errorController = new ErrorController(); var rc = new RequestContext(new HttpContextWrapper(Context), routeData); errorController.Execute(rc);
  • 我对您的评论赞不绝口。这应该是第二个答案; Response.Redirect 不适合我,但您的解决方案效果很好。
  • 我在stackoverflow.com/questions/22383468/…中也有类似的问题,请帮忙
  • 在 2017 年不起作用...重定向到正确的操作,但页面不移动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
相关资源
最近更新 更多