Asp.net mvc 使用带有包含点的虚拟路径的卡西尼号

Asp.net mvc 使用带有包含点的虚拟路径的卡西尼号,asp.net-mvc,iis,cassini,Asp.net Mvc,Iis,Cassini,我正在ASP.NET中的一个现有项目中工作,该项目位于一个包含点的文件夹中 http://localhost/My.Awesome.WebClient/ 使用集成的Visual Studio Development Server,此设置工作正常,但在添加MVC内容并尝试访问它时失败(错误404未找到资源) 似乎可以解释这个问题: 如果在Visual Studio 2010中创建文件系统网站,并且该网站位于文件夹名称中包含点(.)的文件夹中,则URL路由将无法可靠工作。从某些虚拟路径返回HTTP

我正在ASP.NET中的一个现有项目中工作,该项目位于一个包含点的文件夹中

http://localhost/My.Awesome.WebClient/
使用集成的Visual Studio Development Server,此设置工作正常,但在添加MVC内容并尝试访问它时失败(错误404未找到资源

似乎可以解释这个问题:

如果在Visual Studio 2010中创建文件系统网站,并且该网站位于文件夹名称中包含点(.)的文件夹中,则URL路由将无法可靠工作。从某些虚拟路径返回HTTP 404错误。这是因为Visual Studio 2010使用根虚拟目录的不正确路径启动Visual Studio开发服务器(Cassini)

然而,该项目是一个Web项目,而不是一个网站,只有在我开始使用MVC时才失败

问题很容易重现:

  • 文件-新建-项目-ASP.NET MVC 3 Web应用程序
  • 编辑项目设置,Web:使用Visual Studio Development Server
  • 将虚拟路径设置为包含点的内容
  • 尝试运行该站点
  • 除了使用IIS而不是Cassini之外,还有什么方法可以让它工作吗

    编辑:

    我刚才确实找到了解决办法。它在部署场景中实际上不起作用,但可能有助于找到解决方案:

    在my Global.asax.cs文件中:

            routes.MapRoute(
                "Default", // Route name
                // Notice that I added the virtual path here
                "My.Awesome.WebClient/{controller}/{action}/{id}", // URL with parameters
                new { action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
    
            // This is also new
            routes.MapRoute(
                "Root", // Route name
                "", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
    
    使用此解决方案,我的MVC站点可以正常工作,但只能使用以下url:

    http://localhost/My.Awesome.WebClient/My.Awesome.WebClient/
    

    如果您没有得到这个问题的答案(就个人而言,我不知道有什么办法可以解决这个问题),我建议您使用“IIS Express”,它可以免费下载。它可以安装在开发机器上,您可以使用web.config文件控制许多服务器设置,这是相当不引人注目的

    你可以在这里下载:


    我现在只使用IIS Express;Cassini一直缺乏功能,IIS Express避免了我必须为每个web应用程序配置IIS。

    在Visual Studio vNext中,我认为应该删除Cassini,以便强制所有人使用IIS Express(尽管我个人建议所有人尽可能使用本地IIS 7,因为IIS Express仍然不是IIS).我不同意-卡西尼号有它的位置。它是轻量级的,预先安装,不在远程端口上侦听。更多比较请参见Scott Gu的博客:我从未听说过“IIS Express”,直到现在,它似乎真的提供了开发人员需要的所有功能。如果这个问题没有解决办法,我会试试看,谢谢。我也喜欢它不需要管理权限来调试。是的,听起来像是指标准的工作站IIS。IIS Express还允许您设置高级托管选项,如windows身份验证和SSL。您还可以通过命令行启动它,这对于多个托管实例非常方便,例如在您开发SOA时。自VS 2012以来,IIS Express是内置的。这解决了我所有的问题。