MVC 内容文件夹问题 - Twitter Bootstrap 未找到样式表

MVC Content Folder Issue - Twitter Bootstrap Stylesheet Not Found

我在 Visual Studio 2013 年有一个 MVC 项目加载视图并在加载 bootstrap 样式表时出现 404 错误。我正在使用 IIS 来托管我的网站,我有一个名为 "content" 的虚拟文件夹,它指向用于图像、上传等的网络驱动器。在我的 Visual Studio 项目中,我导入了 bootstrap通过 NuGet 包管理器。 Bootstrap 样式表位于

/content/bootstrap.min.css.

我试过使用

* @Url.Content("~/content/bootstrap.min.css")
* "~/content/bootstrap.min.css"
* "/content/bootstrap.min.css"

但没有任何效果。我收到的确切消息是

GET http://mysite/content/bootstrap.min.css 404 (Not Found)

脚本文件正在正确导入,所以这让我觉得我的虚拟文件夹和项目的内容文件夹发生了一些有趣的事情。

有没有其他人遇到过这样的问题,如果遇到过,解决方案是什么?

更新:我将项目 "content" 文件夹中的所有文件复制到虚拟目录中,现在我没有收到任何 404 错误。这不是一个可接受的解决方案。有什么建议吗?

当您在 Visual Studio 2013 中创建 MVC 项目时,当您尝试在 IIS 中托管您的应用程序时,您不必手动创建任何虚拟目录。

您应该使用 Visual Studio 中的发布功能并将其指向您的 IIS。让 VS 管理对 IIS 的部署可确保将所有 HTML/CSS/JS 部署到适当的位置。

此处 link 将引导您完成部署步骤。 ASP.NET MVC

事实证明,创建名为 "content" 的虚拟目录要求项目内容文件夹中的所有文件也必须存在于虚拟目录中。例如,假设我们有一个路径为 \ContentHost\Content 的网络驱动器,它在 IIS 中被映射为一个名为 "content" 的虚拟目录。在我们的项目中,我们还有一个名为 "content" 的文件夹。如果您使用 NuGet 并获得一个 JavaScript 库将一些文件放入项目的内容文件夹中,您必须手动将这些文件复制到 \ContentHost\Content 以便 IIS 识别它们。这是因为 IIS 正在查找 \ContentHost\Content 而不是项目的内容文件夹。如果您使用 NuGet 并升级您的库,则必须确保 \ContentHost\Content 中的文件与项目的内容文件夹同步。这不是世界末日,但它确实强加了另一个手动过程,如果您忘记这样做,可能会导致失败。