2011-08-30 16 views
7

He creado páginas de error personalizadas en mi sitio usandopáginas de error personalizadas en diferentes áreas en ASP.NET 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> 

sin embargo, hay otra área en el sitio, proveedores, y cuando se produce un error en el área del proveedor la redirección va a Proveedores/Error/_. Como no tengo ninguna página de error aquí, el sitio parece colgarse y nunca muestra las páginas de error. ¿Cómo puedo solucionar esto sin tener que copiar las páginas de error al área de proveedores?

+0

En la carpeta Vistas en el área de proveedores, añadir a la customErrors web.config – Martin

+0

ver si esto ayuda http: // stackoverflow .com/questions/5226791/custom-error-pages-on-asp-net-mvc3 –

Respuesta

-1

Supongo que eliminar el "~" antes de que la página de error haga el truco, sin embargo, necesitarás el "\".

Otra forma sería escribir la URL COMPLETA en el atributo redirect/defaultRedirect.

1

Por lo que yo entiendo con MVC su URL constituyen, por defecto es:

Dominio/Controlador/Acción/Identificación del

Si usted tiene un "error" Controlador. En su lógica, se prueba para ver si se originó la petición de un usuario del sitio que sería necesario para redirigir a los "Proveedores" página de error

[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 
     } 
    } 

redirigir a una manipulación de la acción en el controlador Proveedores que devolverá un error la vista correcta

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 
    } 

} 

También puede utilizar el atributo [Authorize] en su acción Proveedores de error para asegurarse de que el usuario ha iniciado sesión.

De esta forma, obtendrá la URL /Suppliers/Error deseada y puede usar la acción SuppliersController para especificar la vista deseada, el modelo y la página master/Layout.

también un vistazo a esta respuesta muy completa a una pregunta similar:

Best 404 example I can find for mvc

Cuestiones relacionadas