如何在ASP.NET MVC的〜/ Views文件夹下请求静态.html文件?
我希望能够请求位于~/Views
文件夹中的静态.html
文件。 根据文档,路由系统在评估应用的路由之前检查URL是否与磁盘文件匹配。
但是,当我要求文件404
错误出现。
我的文件位于〜/ Views文件夹中。 URL是: http://[localhost]/Views/HtmlPage1.html
我错过了什么?
我希望能够请求位于“〜/ Views”文件夹中的静态.html文件。
你不能。 在这个文件夹中有一个web.config文件,它明确禁止从中访问任何文件。 如果你想能够从客户端访问文件,这些文件不应该被放置在ASP.NET MVC中具有特殊意义的Views
文件夹中。
你可以有一个~/Static
文件夹,你可以放置你的HTML文件。 然后像这样访问它:
http://example.com/yourapplicationname/static/foo.html
在Views文件夹中允许像js和html这样的文件在视图中编辑web.config-Folder:
<system.webServer> <handlers> <add name="JavaScriptHandler" path="*.js" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" /> <add name="HtmlScriptHandler" path="*.html" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" /> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers>
我希望能够请求位于〜/ Views文件夹中的静态.html文件。
那么你可以。 标记的答案不完全正确,虽然它提供了一个解决scheme。
标记答案中的推理是正确的,在Views文件夹中的web.config(BlockViewHandler设置是特定的)可以防止文件被直接访问。 它是为了保护Asp.Net MVC中的视图。 但是如果你问了一个关于直接提供这些文件的问题,那么你可能有一个合理的理由去做,比如使用AngularJS局部视图(在我们的例子中),我们不想复制视图文件夹中奇怪的名字。
所以这里是一个非常简单的调整,你可以在Views文件夹中findweb.config文件,而不会影响你的asp.net mvc视图的安全性。 这将像往常一样确保.cshtml文件的安全,但只留下您的.html文件
改变这一点
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
– 至 –
<add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
另一个备选scheme是在任何所需的控制器中插入一个操作方法来提供html文件
public ActionResult MyHtml() { var result = new FilePathResult("~/Views/HtmlPage1.html", "text/html"); return result; }
访问html为http:// yoursite / controller / MyHtml 。 你可以扩展这个动作方法来接受html文件名作为方法/ querystrign参数,并在运行时渲染文件,例如像这样。
public ActionResult MyHtml(string htmlPageName) { var result = new FilePathResult($"~/Views/{htmlPageName}.html", "text/html"); return result; }
- 我怎样才能返回由ASP.NET MVC控制器方法的JSON.NET序列化的camelCase JSON?
- MVC3 Url.Action查询string生成
- 如何在ASP.Net MVC模拟控制器上的请求?
- 如何使用具有“贪婪”构造函数的Scan来使用具有通用未closurestypes的StructureMap
- ASP.NET MVC Url.Action将当前路由值添加到生成的URL
- 如何通过控制器返回另一个控制器的部分视图?
- 使用参数进行ASP.NET MVC 3客户端validation
- 如何调用另一个控制器操作从Mvc中的控制器
- asynchronousPartialView导致“HttpServerUtility.Execute阻止…”exception