2017-02-06 12 views
1

В моем AngularJS ASP.NET MVC приложения Web API у меня есть некоторые шаблоны HTML, которые выглядят следующим образом:Как пометить некоторые файлы не просмотровые в IIS

<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

В IIS, на своем сайте, перейдите в Request Filtering.

Затем выберите вкладку Hidden Segments.

И наконец: Add Hidden Segment... укажите папку, которую вы хотите скрыть.

IIS Request Filterning - Скрытые сегменты:

IIS Request Filterning - Hidden Segments

Для разрешения запросов от АЯКС вызовов в запросе фильтрации, URL вкладки, Allow URL... указать 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> 
+0

Есть ли способ сделать это в IIS Express? – VivekDev

+0

См. Мое обновление. Вы можете установить скрытые сегменты непосредственно в свой web.config. Затем ваши скрытые сегменты не будут доступны для просмотра, если вы отлаживаетесь с помощью IIS Expess. – krlzlx

+0

Проблема, когда я просматриваю http: // localhost: 12405/account/register/step1, тогда шаблоны html не отображаются. Я хочу, чтобы они были визуализированы, когда захотят угловые. Как это может быть сделано? – VivekDev