使用Cassini与包含点的虚拟路径

时间:2012-02-22 09:39:02

标签: asp.net-mvc iis cassini

我正在处理ASP.NET中的现有项目,该项目基于包含点的文件夹

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

此设置使用集成的Visual Studio Develompent Server正常工作,但在添加MVC内容并尝试访问它时失败(错误404资源未找到)。

http://msdn.microsoft.com/en-us/library/ee941656.aspx似乎解释了这个问题:

  

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

但是,该项目是一个 Web项目,而不是一个网站,它只在我开始使用MVC时失败。

问题很容易再现:

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

    编辑:

    我确实找到了一个解决方法。它在部署方案中并不真正起作用,但它可能有助于找到解决方案:

    在我的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-Sites可以正常工作,但只能使用以下网址:

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

1 个答案:

答案 0 :(得分:3)

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

您可以在此处下载:

http://www.microsoft.com/download/en/details.aspx?id=1038

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