【问题标题】:Using Cassini with a virtual path that contains dots将 Cassini 与包含点的虚拟路径一起使用
【发布时间】:2025-11-24 23:40:02
【问题描述】:

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

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

此设置使用集成的 Visual Studio 开发服务器运行良好,但在我添加 MVC 内容并尝试访问它时失败(找不到错误 404 资源)。

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

如果您在 Visual Studio 2010 中创建文件系统网站,并且该网站位于文件夹名称中包含点 (.) 的文件夹中,则 URL 路由将无法可靠地工作。从某些虚拟路径返回 HTTP 404 错误。出现这种情况是因为 Visual Studio 2010 使用错误的根虚拟目录路径启动 Visual Studio Development Server (Cassini)。

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

问题很容易重现:

  1. 文件 - 新建 - 项目 - ASP.NET MVC 3 Web 应用程序
  2. 编辑项目设置,Web:使用 Visual Studio 开发服务器
  3. 将虚拟路径设置为包含点的内容
  4. 尝试运行网站

除了使用 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 站点可以工作,但只能使用以下 url:

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

【问题讨论】:

    标签: asp.net-mvc iis cassini


    【解决方案1】:

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

    你可以在这里下载:

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

    我现在只使用 IIS Express; Cassini 一直缺乏功能,而 IIS Express 让我不必为每个 Web 应用程序配置 IIS。

    【讨论】:

    • 在 Visual Studio vNext 中,我认为应该移除 Cassini 以强制大家使用 IIS Express(尽管我个人建议大家尽可能使用本地 IIS 7,因为 IIS Express 仍然不是 IIS)。
    • 我不同意 - 卡西尼有它的位置。它是轻量级的,预装的,不监听远程端口。有关更多比较,请参阅 Scott Gu 的博客:weblogs.asp.net/scottgu/archive/2010/06/28/…
    • 直到现在我才听说过“IIS Express”,它似乎确实提供了开发人员需要的所有功能。如果没有解决这个问题,我会试一试,谢谢。我也喜欢它不需要管理权限来调试。
    • 是的,听起来您指的是标准工作站 IIS。 IIS Express 还允许您设置高级托管选项,例如 Windows 身份验证和 SSL。您也可以通过命令行启动它,这对于多个托管实例非常方便,例如在开发 SOA 时。
    • 自 VS 2012 起,内置了 IIS Express。这解决了我所有的问题。
    最近更新 更多