我正在使用ASP .NET MVC Beta,当我使用这个最后有一个"点"的url时,我得到HTTP 404(无法找到资源)错误:
http:// localhost:81/Title/Edit/Code1.
如果我在末尾删除点或点在中间某处我没有得到错误.
我尝试调试,但它在MvcHandler中的ProcessRequest之前从"System.Web.CachedPathData.GetConfigPathData(String configPath)"得到错误.
网址末尾不允许使用"点"吗?或者有没有办法修复路由定义来处理这个URL?
举个例子:我有一个名为Detail1 [Id(整数),Code(string),Description(string)]的表,它与Master1通过它的Id列有FK关系.每当我选择Master1的记录时,我也会选择它的Detail1记录来获取它的Code字段.为了不每次都进行这种连接(因为通常不仅有一个细节,还有不止一个)我选择不使用Id列,而是制作Detail1的Code PK.
但是当我摆脱Id并使用Code作为PK时,我的路由也开始使用Code字段,如:Detail1\Edit\Code1
本规范可以包含任何内容或最终内容,包括DOT.在某些情况下,我可以在最后禁止DOT,但有时它确实很有意义.
而且我也看到这篇帖子说路线非常灵活,所以我觉得我的路线不那么奇怪.
所以这就是为什么我做一些非标准的事情.有什么建议?
还有为什么在网址末尾有一个DOT是如此奇怪?
使用Intergrated .net 4.0应用程序池创建了一个新的IIS7网站.
以.aspx结尾的网址会显示自定义404其他任何内容都会显示蓝色服务器错误页面"HTTP错误404.0 - 未找到您要查找的资源已被删除,名称已更改或暂时不可用." (所以与IE无关)
<customErrors redirectMode="ResponseRewrite" mode="On" defaultRedirect="/pages/404.aspx" />
</system.web>
<system.webServer>
<httpErrors >
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
也试过了
<httpErrors existingResponse="PassThrough" />
Run Code Online (Sandbox Code Playgroud)
但这只是导致空洞的回应.
我只找到了一个对执行appcmd来测试自定义http错误处理的有用性的引用,但这里是结果.
C:\Windows\System32\inetsrv>appcmd list config "http://mysite/file.notexist" -section:httpErrors
<system.webServer>
<httpErrors>
<error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="401.htm" />
<error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="403.htm" />
<error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="404.htm" />
<error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="405.htm" />
<error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="406.htm" />
<error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="412.htm" />
<error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custer …Run Code Online (Sandbox Code Playgroud)