我想要显示500,404和403的自定义错误页面.这是我所做的:
在web.config中启用了自定义错误,如下所示:
<customErrors mode="On"
defaultRedirect="~/Views/Shared/Error.cshtml">
<error statusCode="403"
redirect="~/Views/Shared/UnauthorizedAccess.cshtml" />
<error statusCode="404"
redirect="~/Views/Shared/FileNotFound.cshtml" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)HandleErrorAttribute在FilterConfig类中注册为全局动作过滤器,如下所示:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomHandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
Run Code Online (Sandbox Code Playgroud)为上述每条消息创建了自定义错误页面.500的默认值已经开箱即用.
在每个自定义错误页面视图中声明该页面的模型 System.Web.Mvc.HandleErrorInfo
对于500,它显示自定义错误页面.对于其他人,它没有.
有什么我想念的吗?
看起来这并不是显示自定义错误的全部内容,因为我OnException在HandleErrorAttribute类的方法中读取代码并且它只处理500.
我该怎么做才能处理其他错误?
我在web.config中有以下配置:
<resizer>
<sizelimits imageWidth="0" />
<plugins>
<add name="MvcRoutingShim" />
<!--<add name="AzureReader" connectionString="DataConnectionString" /> -->
<add name="DiskCache" />
<add name="PrettyGifs" />
<add name="AnimatedGifs" />
</plugins>
</resizer>
Run Code Online (Sandbox Code Playgroud)
在web.config.Release中,如何将AzureReader元素添加为plugins元素的子元素(有效地取消注释上面的内容)?
我熟悉如何进行基本的转换,但之前从未这样做过.
我想在本地计算机上从IIS运行我的应用程序.我创建了虚拟目录并将应用程序添加到它,并在应用程序的属性文件夹中检查了单选按钮"使用本地IIS Web服务器".然后我开始运行我的应用程序但是我收到以下错误:
无法在webserver上启动调试.请查看常见配置错误的帮助.在调试器外部运行网页可能会提供更多信息.
确保服务器正常运行.通过调试验证web.config中没有语法错误.启动时无需调试.您可能还需要参考联机文档中的ASP.NET和ATL服务器调试主题.
我该如何摆脱这个错误?
我在Windows 7和IIS 7.5上使用Visual Studio 2010.
我在Visual Studio 2010中收到错误消息"无法在Web服务器上启动调试".我单击"帮助"按钮并按照相关建议未成功.
当修改为使用IIS而不是Cassini(用于调试)时,新创建的本地ASP.Net项目会发生这种情况.它会提示在web.config中设置debug ="true",然后立即弹出错误.事件查看器中没有显示任何内容.
我可以附加到w3wp进行调试.它工作但不如F5方便.
我在同一台PC上也遇到了与VS2008类似的问题.调试曾经适用于两者.
我重新注册了Framework 4(aspnet_regiis -i).我运行VS2010修复(这是RTM版本).我在Windows Server 2008 R2 x64机器上运行.
我确实安装了Resharper V5.
必须有一些配置设置或注册表值,在修复后仍然存在问题.
我很欣赏任何想法.
我正在使用VS 2010和IIS 5开发XP(SP3)机器.
我有两个版本的同一个网站.我们发布了第一个生产版本,因此我将代码分叉到一个新的目录树中,并在IIS中设置新的虚拟目录以指向新的树.这些项目设置为在IIS而不是VS的服务器上运行.主站点是基于MVC 2的项目.
我的问题是,当我在Visual Studio 2010中点击F5开始调试新版本时,我得到一个"无法在Web服务器上开始调试.Web服务器无法找到所请求的资源." 昨天我花了很多时间试图找出它找不到的资源.这发生在它到达"应用程序启动"之前.我终于想到了查看Web日志,发现无论何时我按下F5键,web日志都会显示/debugattach.aspx的DEBUG请求,返回码为404(未找到).如果我在旧版本上运行相同的序列,它会显示相同的内容,但首先使用401代码,然后使用200代码重复请求.
我的第一个想法是VS必须写出一个"debugattach.aspx"文件,然后调用它,也许它没有对目录的写权限,但据我所知,它确实如此.
我已经google了debugattach.aspx,并且返回的所有文章的前几页似乎都是指锁定和超时,主要是在IIS 7和VS 2005上.似乎没有任何东西适用于这种情况.
看看有效的旧版本和没有的旧版本之间有什么不同,唯一的事情是虚拟目录的IIS设置和代码本身的web.config.但是我已经并排浏览了两个站点,并且找不到任何可以解释这种行为的差异.
有人知道他们可以与我分享吗?或者任何人都可以向我指出有关debugattach.aspx究竟是什么/做什么,以及DEBUG HTTP请求的作用和/或VS如何使用它们的任何文档?
提前致谢.
我已经将项目设置为在IIS上运行了一段时间,当我按F5时它确实连接没有问题.但最近这停止了工作,当我按F5 /按下时我确实收到了这个错误Debug->Start debugging:
无法在Web服务器上启动调试.远程服务器返回错误:(404)Not Found.
这是我的设置:
我不确定发生了什么,可能是一些VS更新或Windows更新,但我试图谷歌无处不在,没有任何工作.如前所述,附加到流程工作正常,但这种更简单的方法停止了这一操作.
更新:
尝试过Process Monitor来找出出错的地方,看起来w3wp尝试访问路径MyProjectFolder\debugattach.aspx,结果是"NAME NOT FOUND".不知道这是否是问题的根源.
我刚刚为IIS 7实现了URL Rewrite Module 2.0,它似乎导致Visual Studio 2010中的"无法在Web服务器上启动调试"错误.
除了在web.config中评论节点之外,是否有人知道VS2010是否可以修复此问题?
谢谢