2009-08-20 111 views
2

我刚刚得到了新的发展箱时遇到让我的MVC项目启动和运行的问题。我的旧盒子有Server 2003和IIS6。在设置了here中提到的通配符映射后,我能够使我的MVC应用程序在此框上工作。我的新盒子正在运行Vista Business和IIS7。当我复制我的应用程序并尝试运行它时,出现'http 404找不到资源。'错误。但是,如果我创建一个新的MVC应用程序并运行它,一切正常。我也从我的旧盒子里复制了Nerd晚餐应用程序,并且工作得很好。404错误时,ASP.NET MVC应用IIS7

我验证过的应用程序在集成模式下运行,并且比较了工作和非工作应用程序的web.config文件中,但看到没有什么比专用AppSettings的不同等。我试图在经典模式下使用通配符映射集来运行应用程序,但这也不起作用。我也尝试使用卡西尼运行应用程序,但得到了相同的结果。

+1

可以运行菲德勒,看看哪个请求实际上产生404? – 2009-08-20 15:47:55

+0

这是对应用主页的初始请求。 即{主机名}/{应用程序名称}/ – Hamman359 2009-08-20 16:53:13

回答

0

OK,我想通了这个问题。这个应用程序是一个Web Forms应用程序的端口,作为一个概念验证项目。因此,当项目第一次创建时,我们只需在项目名称的末尾添加一个.MVC以使其{project name} .MVC。这一点,现在我知道发生了什么并不令人惊讶,导致了默认路由定义的问题。我更改了名称以使用下划线而不是句号,现在一切正常。我假设它在IIS6下运行时工作正常,因为它使用通配符映射进行设置,因此没有.MVC扩展名将其混淆。

1

我已经发布的答案在我的博客,看看在

http://nkitdugar.blogspot.com/2011/02/special-care-while-migrating-mvc.html

我有较早IIS 6上托管的基于MVC应用程序现在IIS 6不支持扩展名URL路由默认情况下,所以我们需要在IIS6中的{ControllerName} .aspx {Action method} {Id}中定义的默认路由中为控制器名称添加一些扩展。此外,我们如果我们想要去像.mvc等一些其他的扩展,然后我们需要使用像通配符mappngs等技术,它映射

现在,当我们已经迁移到IIS7,然后扩展名的URL支持,这意味着URL可以在那里没有任何相应的物理位置。

因此,当您将您的MVC应用程序迁移到IIS7时,请确保在Globla.asax中定义的默认路由没有任何使用{controller}.aspx\{action method}\{Id}这样的控制器定义的扩展名,并将其更改为\clean URL route {Controller}\{Action Method}\{ID(optional)}。 你应该记住的是,网站的应用程序池的管道模式应该从经典设置为集成的第二件事。

这就是现在你的网站已准备好要在IIS7主办。

+1

请务必阅读[上自我推销FAQ](http://stackoverflow.com/faq#promotion)仔细。另外请注意,每次链接到自己的网站/产品时都需要发布免责声明。 – j0k 2012-11-29 12:44:05