如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)【英文标题】:How to Serve Static Files (in ~/Content) Via HTTPS in ASP.NET MVC3 【发布时间】: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 总是给我相对路径,所以相对路径将使用与页面相同的协议。你能提供一个img
或script
或任何标签的例子吗?
我对错误一无所知 - 这很奇怪。
【参考方案1】:
一个简单的解决方案是不要使用“~”
【讨论】:
以上是关于如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 中通过 Ajax 提交表单?
如何在我的 ASP.NET 项目中通过 Revox 设置 Pages 管理面板仪表板模板?
在 ASP.NET 代码中通过 javascript 重置 Jquery 验证后停止回发
如何在 ASP.net MVC3 中获取 Advantage Database 数据?