2012-10-18 48 views
0

我使用EndRequest方法中的以下方法从global asax。即使来自图片请求或其他请求,我也会获得HTTP 404 error。重点是我只想检查第一个请求/主要请求。你能帮我吗。这是唯一可行的解​​决方案。避免处理404除主要以外的其他请求

{ 
    if (Context.Response.StatusCode == 404) 
    { 
     Response.Clear(); 

     var rd = new RouteData(); 
     rd.DataTokens["area"] = "AreaName"; 
     rd.Values["controller"] = "Errors"; 
     rd.Values["action"] = "NotFound"; 

     IController c = new ErrorsController(); 
     c.Execute(new RequestContext(new HttpContextWrapper(Context), rd)); 
    } 
} 
+0

你说的“主”是什么意思?你只对处理控制器操作的404s感兴趣吗? – bluevector

+0

由主让我们假设你向http://www.microsoft.comand发送请求,如果你锁定在萤火虫中,你会看到服务器对图像和其他东西的其他请求 –

+0

把你的错误放在这里。 (stacktrace) –

回答

0

假设你希望只办理控制器操作404可以检查当前请求是否是一个这样的:

if(!string.IsNullOrEmpty(Request.RequestContext.RouteData.GetRequiredString("controller"))) 
{ 
    ...handling code goes here.... 
} 
+0

不是真的我应该强迫他去在一个特定的控制器和基于名称(一些url已知在数据库中作为重定向腐烂),所以我不能采取这个选项。在那里,未知的链接可以是从网站的其他页面的重定向页面,但我不能在它们之间作出区别,直到我到达404指定控制器,但我不会在那里与其他请求像图像请求那样进入。 –

+1

然后,你需要使用正则表达式来反对Url或类似的东西。 – bluevector

相关问题