在我的AngularJS ASP.NET MVC Web API应用程序中,我有一些HTML模板,如下所示:
<form>
<div class="row">
<div class="col-xs-8">
<div class="form-group">
<label class="col-sm-6 control-label" for="FirstName">First Name:</label>
<input class="col-sm-6 form-control" id="FirstName" name="FirstName" type="text" ng-model="accountModelStep2.FirstName" placeholder="first name" />
</div>
</div>
</div>
...And so on...
...Rest of the html omitted.
</form>
问题是当我启动应用程序时,浏览说:
http://localhost:12405/Templates/RegisterStep2.html
IIS实际上将模板作为HTML发送,并在浏览器中呈现:
我不希望这些文件可以直接浏览,即使用户密钥在这样的URL中,浏览器也应该重定向到主页或者至少显示一些他们不应该要求的错误这样的文件直接。但是当用户浏览时:
http://localhost:12405/account/register/step1
应该渲染。
我该怎么做?
在visual studio解决方案中,文件如下所示:
答案 0 :(得分:1)
在IIS中,在您的网站上,转到Request Filtering
。
然后选择Hidden Segments
标签。
最后:Add Hidden Segment...
指定要隐藏的文件夹。
IIS请求过滤 - 隐藏的细分:
要允许来自ajax调用的请求,请在“请求过滤”URL
标签中Allow URL...
指定允许的网址:
或直接在您的web.config中:
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="Templates" />
</hiddenSegments>
<alwaysAllowedUrls>
<add url="/Templates" />
</alwaysAllowedUrls>
</requestFiltering>
</security>
</system.webServer>