如何标记IIS中不可浏览的某些文件

时间:2017-02-06 06:35:55

标签: asp.net iis

在我的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发送,并在浏览器中呈现:

enter image description here

我不希望这些文件可以直接浏览,即使用户密钥在这样的URL中,浏览器也应该重定向到主页或者至少显示一些他们不应该要求的错误这样的文件直接。但是当用户浏览时:

http://localhost:12405/account/register/step1

应该渲染。

我该怎么做?

在visual studio解决方案中,文件如下所示:

HtmlTemplatesOnVisualStudio

1 个答案:

答案 0 :(得分:1)

在IIS中,在您的网站上,转到Request Filtering

然后选择Hidden Segments标签。

最后:Add Hidden Segment...指定要隐藏的文件夹。

IIS请求过滤 - 隐藏的细分:

IIS Request Filterning - Hidden Segments

要允许来自ajax调用的请求,请在“请求过滤”URL标签中Allow URL...指定允许的网址:

enter image description here

或直接在您的web.config中:

<system.webServer>
    <security>
        <requestFiltering>
            <hiddenSegments>
                <add segment="Templates" />
            </hiddenSegments>
            <alwaysAllowedUrls>
                <add url="/Templates" />
            </alwaysAllowedUrls>
        </requestFiltering>
    </security>
</system.webServer>