在IIS 7上,MVC 3返回404错误的MVC无扩展名URL请求。

3
我们的网站是asp.net web-forms和MVC 3的混合体。除了一个单独的MVC应用程序存储在网站根目录下的一个单独目录中并有自己的web.config外,网站是以web-forms开发的。IIS 7服务器可以正确地提供web-forms页面(aspx),但MVC URL返回404-文件或目录未找到
例如,假设网站是www.abc.com,MVC应用程序使用www.abc.com/aaa/controller/action访问,其中aaa是MVC应用程序的根目录,包含其自己的web.config。Web-forms url(如www.abc.com/feedback.aspx)可以工作,但MVC URL(如(www.abc.com/aaa/Controller/Action)返回404。
我已经从我的共享主机提供商那里确认,该网站正在运行.net 4集成管道模式应用程序池,因此扩展名为url默认由IsapiModule处理,无需任何额外的配置。
我脑海中出现的一个疑问是,MVC应用程序根文件夹(上述示例中的aaa)是否应转换为单独的应用程序?
有什么猜测,来解决以上MVC URL问题吗?

我同意你可能需要将 "aaa" 设置为虚拟应用程序,因为它实际上是带有自己的 web.config 的。 - Steven V
2个回答

0

共享路由系统。你应该制作一个混合WebApp,部分WebForm和MVC。最近我在这里做了类似的事情,其中是主应用程序,而MVC是嵌套的应用程序。在这种情况下,您必须只有一个全局.asax和一个整个站点的单个web.config。MVC可以与WebForm位于同一目录中,但只有当它们共享内容时才能这样做。

我遵循了来自Scott Hanselman的指南来完成这项工作。


该网站(Web表单)是由其他人开发的,而我已经开发了一个独立的MVC应用程序。因此,在这个阶段,制作混合Web应用程序不太可能是我考虑的解决方案。 - Jatin
然后,您必须将每个应用程序放在单独的虚拟目录中,可能还要创建第三个来管理身份验证和重定向,因为它们将是跨域应用程序。 - Fals
MVC 应用程序仅供内部使用,并具有其单独的身份验证模块。我不确定重定向部分,但这里只涉及一个域。 - Jatin
鉴于它们不共享同一个AppDomain,因此无法按照您的期望使其工作。创建一个新的虚拟目录,将Mvc应用程序放在其中,然后从WebForm重定向到该目录。 - Fals

0

托管提供商使用 WebsitePanel ,我可以通过它为包含MVC应用程序的文件夹创建虚拟目录。现在,MVC URL被路由到Isapi处理程序,不再返回404(文件未找到)。所以,我想我会在这里结束这个主题。

简而言之,为MVC应用程序创建虚拟目录解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接