2011-08-30 73 views
7

我已经设置了自定义错误页上使用自定义错误页MVC3

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error/InternalError"/> 
    <error statusCode="404" redirect="~/Error/FileNotFound"/> 
    <error statusCode="403" redirect="~/Error/AccessDenied"/> 
</customErrors> 

我的网站但没有网站,供应商上的另一个区域,而当发生错误供应商地区的重定向转到供应商/错误/ _。由于我在这里没有任何错误页面,站点似乎挂起从不显示错误页面。我如何解决这个问题,而不必将错误页面复制到供应商区域?

+0

在供应商方面的意见文件夹,添加的customErrors到Web.config – Martin

+0

看看这有助于HTTP://计算器.COM /问题/ 5226791 /自定义错误页上-ASP净MVC3 –

回答

-1

我想删除“〜”之前的错误页面应该做的伎俩,你将需要“\”虽然。

另一种方式是写在重定向/的defaultRedirect属性的完整URL。

1

至于我与MVC了解您的网址组成,默认为:

域/控制器/动作/ ID

如果你有一个“错误”控制器。在你的逻辑,你测试,看看是否请求源于该网站的用户,将需要重定向到“供应商”错误页面

[HandleError] 
    public ActionResult Index() 
    { 
     // Test to see if you need to go to the SuppliersController 
     if (this.User.IsInRole("supplier")) 
     { 
      return Redirect("/Suppliers/Error"); 
     } 
     else 
     { 
      return View(); // This returns the "Error" View from the shared folder 
     } 
    } 

重定向到一个错误处理您的供应商控制器的行动,将返回正确的看法。

public class SuppliersController : Controller 
{ 
    // 
    // GET: /Suppliers/ 

    public ActionResult Error() 
    { 
     return View("Error","SomeMasterPage"); // No "Error" view in Suppliers View folder, so it uses the one in shared folder 
    } 

} 

你也可以用你的供应商的错误行动[Authorize]属性,以确保用户登录。

通过这种方式,您将获得所需的URL并可使用SuppliersController Action来指定所需的视图,模型和主/布局页面。

也期待在这个非常全面的回答类似的问题:

Best 404 example I can find for mvc