我一直在试图在IIS6上部署我的MVC应用程序(linked question)
我暂时取消了通配符映射,并试图让.mvc扩展程序正常工作。在IIS中正确配置了所有内容,.mvc扩展名指向所有动词类型的.NET dll(未选中验证是否存在选项)。
每次我发出请求时,我得到的只是.NET 404页面。 /Home.mvc和/Home.mvc/Index都返回该页面。
我没有对默认的Web.config进行任何更改,并且我的所有路由都配置了基于extenionless和extension的等价物。
我很欣赏这种配置对于每个阅读过的人来说都很容易(声音),但是我向你们保证,我没有做任何不同的事情,我的工作也不行。我甚至尝试将它部署在带有IIS6的不同服务器上,同样的问题也发生在那里。
路由模块/处理程序是否完全缺少请求并让它落入标准.NET 404错误,是否还有其他原因?奇怪的权限?
对于IIS 404错误,我更新了自定义错误设置,因此它在站点路由中调用了Default.aspx页面。这是Visual Studio中生成的MVC beta模板的默认页面,它在后面的代码中执行以下操作:
HttpContext.Current.RewritePath(Request.ApplicationPath);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
这就是我之前发布的错误:
[HttpException (0x80004005): The incoming request does not match any route.]
System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +15589
System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +40
System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +7
......
答案 0 :(得分:3)
我的original problem已由Oli解决,他指出网站需要Global.asax文件。我使用NAnt / MSBuild来部署我的发布包,并且没有包含Global.asax文件。在我们所有的.NET 2项目中都可以忽略这个文件,并且已经使用了我们所有的NAnt部署结构,所以我没有想到它。
值得注意的是未来。我没有发现的东西,所以归功于Oli。再次感谢!
答案 1 :(得分:1)
尝试从最简单的配置开始。更改路由定义以使用.aspx而不是.mvc,并查看/home.aspx/index是否有效。
答案 2 :(得分:0)
我没有对此进行任何更改 默认Web.config和我的所有路由 配置extenionless和 基于扩展的等价物。
扩展和无扩展路由的顺序是什么?
我要么删除无扩展名(因为你正在使用扩展名),要么确保它在扩展路由后添加(由于路由的第一个匹配性质)。
另外,请查看http://www.asp.net/learn/mvc/tutorial-08-cs.aspx,然后仔细检查您是否正确设置了IIS(听起来就像这样)。
答案 3 :(得分:0)
非常感谢huey,也是通过那篇文章 - 一切都配置相同。
我的无扩展路由在扩展路由之前输出,纯粹是因为我打算使用ISAPI重写模块,并希望从路由表生成的任何URL都是干净的。然后将它们重新写入基于扩展的那些。
我现在甚至不关心无扩展名的URL,只是希望得到一个版本,所以我可以展示客户端!到目前为止,我真的非常喜欢MVC的东西,但这已经让事情变得光彩夺目。
再次感谢您的协助。
答案 4 :(得分:0)
Url重写可以帮助您解决问题。我已经实现了允许在任何IIS版本上部署MVC应用程序的解决方案,即使使用虚拟主机也是如此。 http://www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx