2011-09-18 58 views
2

我已经将MVC3 web应用程序添加到由普通的旧html文件组成的现有网站。当你请求一个特定的文件时,这很好,但是我没有想到的是,通过改变站点来使用.Net 4,它不再需要注意IIS中的默认文档设置(在这种情况下是IIS 6)。因此,例如,我可以请求www.something.com/index.html,但如果我请求www.something.com,我会得到一个资源未找到的错误页面。 Global.asax中是否有MapRoute,我可以指定将站点路由网址映射到index.html?如何在MVC3网站上获取默认html页面

+0

你看了菲尔哈克[博客文章(HTTP:/ /haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx)我已链接到[我的答案](http://stackoverflow.com/questions/7460870/how-to-get-a-default-html-page-on-mvc3-site/7460903#7460903)关于配置你的IIS 6.0以支持默认情况下IIS 6.0不支持的扩展名的URL。 –

+0

是的,但我不确定它与我的问题完全相关。我只是想将请求重定向到站点根目录index.html。 Phil的帖子更多的是关于映射到控制器。我会回去再看看今晚。 –

+0

如果你想在用户请求'http:// www.something.com /'时执行一些控制器动作,你肯定需要一个通配符映射,如Phil Haack所解释的。如果您想要提供静态HTML页面,那么只需将此HTML页面作为默认文档添加到IIS控制台中虚拟目录的属性中即可。 –

回答

3
routes.IgnoreRoute(""); 

允许请求落入站点配置中定义的默认文档。我在这个项目中只有一个控制器和路由,用于客户端的Ajax请求。我希望网站的其他部分能继续像纯html一样行事。使用routes.IgnoreRoute(“”) MVC3应用程序忽略允许IIS返回默认文档的请求。非常感谢您的建议。

+1

这只是在MVC3中引发错误:“路由URL不能以'/'或'〜'开头,并且不能包含'?'字符 参数名称:routeUrl“ – Gullbyrd

+1

同样的问题在这里不能包含'〜'或'?' – Anthony

+0

它应该是'routes.IgnoreRoute(“”);' –

1

这很正常。 IIS 6.0不支持无扩展名的网址。 Phil Haack解释说您需要一个wildcard mapping

2

在Global.asax中,你可以尝试这样定义一个

routes.MapRoute("", "index.html", new { controller = "Home", action = "Index" }); 

一个规则,但恐怕与IIS 6,你必须处理Wild card mapping

+0

我不确定我是否清楚地表达了我的问题。我不想将index.html的请求映射到控制器。我想将请求重定向到站点根目录index.html。 –

+0

在回答中的评论后,我明白你的问题。尝试看这个答案http://stackoverflow.com/questions/1149750/using-asp-net-routing-to-serve-static-files/3112192#3112192 – Iridio

6

看起来像是发生了变化,我不得不这样做

routes.IgnoreRoute(""); 

ASP.NET抱怨路线开始“/”

+0

确认:'路线。IgnoreRoute(“/”)'给出错误 - 此答案按预期工作。 – Matt

相关问题