相关疑难解决方法(0)

如何在ASP.NET MVC中正确处理404?

我正在使用RC2

使用URL路由:

routes.MapRoute(
    "Error",
     "{*url}",
     new { controller = "Errors", action = "NotFound" }  // 404s
);
Run Code Online (Sandbox Code Playgroud)

以上似乎照顾这样的请求(假设默认路由表由初始MVC项目设置):"/ blah/blah/blah/blah"

覆盖控制器本身中的HandleUnknownAction():

// 404s - handle here (bad action requested
protected override void HandleUnknownAction(string actionName) {
    ViewData["actionName"] = actionName;
    View("NotFound").ExecuteResult(this.ControllerContext);
}  
Run Code Online (Sandbox Code Playgroud)

但是,之前的策略不处理对Bad/Unknown控制器的请求.例如,我没有"/ IDoNotExist",如果我请求这个,我从Web服务器获取通用404页面而不是我的404,如果我使用路由+覆盖.

最后,我的问题是: 有没有办法在MVC框架中使用路由或其他东西来捕获这种类型的请求?

或者我应该默认使用Web.Config customErrors作为我的404处理程序并忘记所有这些?我假设如果我使用customErrors,由于Web.Config对直接访问的限制,我必须在/ Views之外存储通用404页面.

asp.net-mvc http-status-code-404

426
推荐指数
9
解决办法
13万
查看次数

IIS7在设置Response.StatusCode时覆盖customErrors?

这里有一个奇怪的问题.每个人都知道,如果您使用web.config的customErrors部分来创建自定义错误页面,那么您应该将其设置Response.StatusCode为适当的.例如,如果我创建一个自定义404页面并将其命名为404.aspx,我可以放入<% Response.StatusCode = 404 %>内容以使其具有真正的404状态标题.

到目前为止跟着我?好.现在尝试在IIS7上执行此操作.期间我无法上班.如果Response.StatusCode在自定义错误页面中设置,IIS7似乎完全覆盖自定义错误页面,并显示其自己的状态页面(如果您已配置一个.)

有没有其他人看到这种行为,也许还知道如何解决它?它在IIS6下工作,所以我不知道为什么会发生变化.

注意:这与ASP.NET自定义404返回200 OK而不是404 Not Found中的问题不同

asp.net iis-7

98
推荐指数
3
解决办法
6万
查看次数

Response.Redirect导致"对象移动到此处"

我正在开发一个C#ASP.NET页面,通常最终会重定向到"file:"URL.在大多数情况下,这似乎在大多数情况下工作正常,但偶尔(并且,在我的测试系统上,显然总是)而不是重定向到文件我得到一个文本"对象移到这里"的页面,其中"here"是我尝试重定向到的文件的链接,但在冒号后面有两个斜杠而不是两个(即"file:////testserver/docs/testdoc.doc")

这通常伴随着"System.Threading.ThreadAbortException:Thread is aborted"消息.

我在其他地方寻找解决方案并找到一些有关Response.Redirect的有趣内容导致ThreadAbort异常,但这似乎不是根本问题 - 在我看来,实际问题是"对象移到这里"消息,导致抛出异常.

任何人都有任何建议我为什么会这样......?

编辑:忘记提及我正在使用IE Tab运行Firefox(3.5.7),所以当我想我最好在IE中试用它时,瞧它 - 它适用于IE(7).

c# asp.net exception abort

35
推荐指数
3
解决办法
6万
查看次数

Google 404和.NET自定义错误页面

我有一个带有自定义404页面的ASP.NET 2.0网站.如果未找到内容,则网站将使用aspxerrorpath =/mauro.aspx添加查询字符串来提供自定义404页面.404页面本身的HTTP状态为200.要尝试解决此问题,我已添加

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.StatusCode = 404;
    }
Run Code Online (Sandbox Code Playgroud)

我添加了Google小部件,并且有两个问题.在Internet Explorer 7中,它不显示它应该显示的位置.如果我将它添加到内容中,我会在char 79行226或其附近出现"未知错误"; 如果我将其添加到头部,则搜索框将显示在内容上方.在Firefox中它工作正常.

所以我的问题是:

  1. 如何使小部件显示为内联?
  2. 如何将错误页面呈现为404,其中包含所请求文件的原始名称和路径,以便在我请求mauro.aspx时获取404页面的内容,但是使用mauro.aspx的URL?(我假设我必须在begin_request global.asax文件中进行一些URL重写,但是在我做任何傻事之前都要确认这一点.)

asp.net google-widget http-status-code-404

9
推荐指数
2
解决办法
6724
查看次数