【问题标题】:How to Serve Static Files (in ~/Content) Via HTTPS in ASP.NET MVC3如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)
【发布时间】:2013-09-18 16:39:21
【问题描述】:

我有一个 ASP.NET MVC3 应用程序,我刚刚添加了一个区域。区域内的链接(到图像、JavaScript 文件、CSS 等)默认为 https。但是,MVC 似乎并未通过 https 提供 ~/Content 目录内的静态内容。

我仔细研究了 Internet 文档,但没有发现有关 MVC 如何以不同方式处理 ~/Content 目录的信息,或者如何让它通过 https 提供静态文件。

我希望它会像 Web.config 条目一样简单,上面写着“允许通过 https 提供静态文件”,但我没有找到这样的东西。

我想出的唯一选择是编写一个自定义控制器来提供我的静态内容,但这似乎非常错误。我错过了什么?

更新:为了回答 Joe 在下面的问题,视图本身是通过 https 提供的。对于静态内容,例如 JavaScript 文件,我使用的是没有协议或域的绝对 URL。例如:

<script "/Areas/Admin/Content/js/jquery.js"></script>

因为页面的协议是https,所以浏览器正在请求https://localhost:5300/Areas/Admin/Content/js/jquery.js(自然)。将协议设置为 http 并正确提供该文件:将其设置为 https,我得到一个错误。

更新:我愚蠢地没有仔细阅读错误。里面有更多的细节,但它仍然让我感到困惑。我尝试访问https://localhost:5300/Areas/Admin/Content/js/jquery.js 时遇到的错误是:

Parser Error Message: An error occurred loading a configuration file: 
Failed to start monitoring changes to
'C:\Users\ethan\Documents\gitwork\SampleWebSite\admin\content\web.config'
because access is denied.

为什么要在那个目录中寻找 Web.config 文件?

【问题讨论】:

  • 所以它正在使用包括http:// 在内的完整URL 写出标记?看起来有点奇怪——当我在页面上放置内容时,MVC 总是给我相对路径,所以相对路径将使用与页面相同的协议。你能提供一个imgscript 或任何标签的例子吗?
  • 我对错误一无所知 - 这很奇怪。

标签: c# asp.net-mvc asp.net-mvc-3 iis iis-7


【解决方案1】:

一个简单的解决方案是不要使用“~”

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 2011-10-20
    • 2017-03-23
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2011-01-16
    相关资源
    最近更新 更多