2

我一直在试图在 IIS6 上部署我的 MVC 应用程序(链接问题

我暂时放弃了通配符映射,并试图让 .mvc 扩展工作。IIS 中的所有内容都已正确配置,并且 .mvc 扩展名指向所有动词类型​​的 .NET dll(未选中验证是否存在选项)。

每次我提出请求时,我得到的只是 .NET 404 页面。/Home.mvc 和 /Home.mvc/Index 都返回该页面。

我没有对默认的 Web.config 进行任何更改,并且我的所有路由都配置了无扩展和基于扩展的等效项。

我很欣赏这个配置对于​​每个阅读它的人来说是多么容易(声音),但我向你保证我没有做任何不同的事情,我的不会工作。我什至尝试使用 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
   ......
4

5 回答 5

3

Oli解决了我最初的问题,他指出网站需要 Global.asax 文件。我正在使用 NAnt/MSBuild 来部署我的发布包,但没有包含 Global.asax 文件。这个文件在我们所有的 .NET 2 项目中都可以忽略,并且一直在我们所有的 NAnt 部署结构中,所以我没有多想。

一个要注意的未来。我没有发现的东西都归功于奥利。再次感谢!

于 2008-11-12T23:47:00.527 回答
1

尝试从最简单的配置开始。将您的 Route 定义更改为使用 .aspx 而不是 .mvc 并查看 /home.aspx/index 是否有效。

于 2008-11-12T23:38:18.080 回答
0

我没有对默认的 Web.config 进行任何更改,并且我的所有路由都配置了无扩展和基于扩展的等效项。

扩展和无扩展路由的顺序是什么?

我要么删除无扩展名(因为您正在使用扩展名),要么确保在扩展名路由之后添加它(由于路由的第一个匹配性质)。

此外,请查看http://www.asp.net/learn/mvc/tutorial-08-cs.aspx并简单地仔细检查您的 IIS 设置是否正确(听起来像您这样做)。

于 2008-11-12T13:35:25.910 回答
0

谢谢huey,也看过那篇文章-所有配置都相同。

我的无扩展路由在扩展路由之前输出,纯粹是因为我打算使用 ISAPI 重写模块并希望从我的路由表生成的任何 URL 都是干净的。然后它们将被重写为基于扩展的。

虽然目前我什至不在乎无扩展的 URL,但我只想让一个版本正常工作,这样我就可以向客户展示!到目前为止,我真的很喜欢 MVC 的东西,但这让事情失去了光彩。

再次感谢你的帮助。

于 2008-11-12T17:38:49.210 回答
0

网址重写可以帮助您解决问题。我已经实现了允许在任何 IIS 版本上部署 MVC 应用程序的解决方案,即使使用虚拟主机也是如此。 http://www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx

于 2009-11-24T06:24:20.130 回答