C#/IIS/MVC:静态内容未在不同环境中加载
Posted
技术标签:
【中文标题】C#/IIS/MVC:静态内容未在不同环境中加载【英文标题】:C#/IIS/MVC: Static Conetent not loading on different environments 【发布时间】:2015-07-25 02:23:13 【问题描述】:我有一个 C# MVC 4.5 网站,直到最近,当我添加了一个新文件夹时,一切都按预期工作。
它旨在容纳 CMS 类型的应用程序并将它们与主站点分开。当我构建这些应用程序时,我检查了网站本地实例上的所有内容,一切看起来都很好。
但是,由于我将更新推送到 DEV,我得到了一些奇怪和意外的结果 - 如下所示。
这是一个伪文件结构:
Solution 'MySite'
MySite
Controllers
Images // Images from this folder appear normally
Models
Scripts // Scripts from this folder load normally
Views
Admin
AdminApplication
Index.cshtml
Shared
admin_common.css // 500 error
admin_common.js // 500 error
Images
banner.jpg // will not load
请记住,所有这些问题都只在 Dev 上,本地上的一切都很好。加载一个 css 文件但没有任何内容似乎很奇怪。
这是样式和脚本在布局中的加载方式:
@Scripts.Render("~/Shared/jquery.js") // loads fine
@Scripts.Render("~/Admin/Shared/admin_common.js") // 500
@Syle.Render("~/Admin/Shared/admin_common.css") // 500
这是我尝试过的:
我查看了日志文件,但他们都说文件加载正常。我只看到 200 个,没有 500 个。
我查看了 IIS 中的静态内容选项,如下所示:http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/,但它是 IIS 范围的选项,而不是特定于文件夹的选项。
1234563不见了。我检查了我的 web.config 文件,并找到了 isapi 文件,它们看起来很好。我尝试了 Failed Request Tracing,如下所示:IIS 7 gives me error 500 internal server error when trying to display my XML document,但那里没有日志,即使它打开了....这很奇怪,但不是这个问题涉及什么。
我也尝试过向 web.config 添加一个 httperror 行,如下所示:https://serverfault.com/questions/407954/how-to-diagnose-a-500-internal-server-error-on-iis-7-5-when-nothing-is-written-t。它应该给出更好的错误,但它没有。
是什么导致我的开发机器不显示这些必要的内容?
【问题讨论】:
我认为应该是: ** ~/Admin/Shared/admin_common.css ** NOT ~/Admin/Scripts/admin_common.css .... 你下面没有 Scripts 文件夹管理员 好收获。我会解决的。不过,这只是一个审美错误,实际代码中并不存在这个问题。 尝试更改包名称(提供不存在的路径,就像 JQuery 包一样),因为路径(名称)提到错误的 CSS 和 js 存在有效的现有路径和文件,因此它无法为其创建包。确保在包配置文件中使用新名称定义包。 【参考方案1】:TL;DR:一个不必要的 web.config 文件,缺少 isapi 处理程序。
当我第一次启动新文件夹 Admin 时,我不确定它会如何工作。我在某处读到它需要它自己的 web.config 文件。所以我从某个地方复制了一个简单的 web.config 文件到新文件夹中。
后来,我将它的名称更改为 web.bonfig,使其处于非活动状态(b 用于备份)。
我目前的理论可能是服务器上的冲突配置文件的优先级不同(但类似的东西会在哪里定义呢?)。今天早上,我从 Windows 资源管理器窗口将文件名更改为 web.bonfig.backup-ignore,这似乎解决了我的问题。
顺便说一句,web.bonfig 在 system.webServer 中只定义了一个处理程序。这表明我的问题中的解决方案 3 是正确的解决方案,但我查看的是错误的配置文件。
【讨论】:
以上是关于C#/IIS/MVC:静态内容未在不同环境中加载的主要内容,如果未能解决你的问题,请参考以下文章