我整天都在梳头。我试图在抛出异常时仅显示一个友好的cshtml页面,以使我的UX保持一致-我甚至不希望用户知道我是否从UI进入.net堆栈。
我正在通过导航到进行测试localhost:2922/junkurl
,如果URL无法解析,找不到或生成异常,我想显示一个友好的呈现的cshtml页面。
我在web.config中拥有什么:
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/Shared/Error.cshtml">
</customErrors>
这将导致默认的黄色错误页面。但是,如果我将error.html
页面放在根目录中并使用它:
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/error.html">
</customErrors>
有用。唯一的问题是,我不想直接用html重新构建整个Layout / LoginPartial / etc-我想使用剃刀渲染它。解决此问题的典型方法是什么?如果我错过了答案,我已经做了很多关于这个道歉的搜索,我完全茫然了。
如果可能的话,我宁愿从代码中执行此操作,但是据我了解,代码将仅涵盖特定级别的异常...在某些时候,似乎必须通过config处理。我只希望它是简单明了的配置!
在您的web.config中尝试使用ErrorController和以下配置
web.config
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
<error redirect="~/Error/InternalServer" statusCode="500" />
</customErrors>
错误控制器
public class ErrorController : Controller
{
public ActionResult Index()
{
return View("Error");
}
public ActionResult NotFound()
{
Response.StatusCode = 200;
return View("NotFound");
}
public ActionResult InternalServer()
{
Response.StatusCode = 200;
return View("InternalServer");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句