Как загрузить файл web.config с помощью WebDAV на IIS7? - PullRequest
1 голос
/ 09 марта 2010

Я хочу скопировать веб-сайт ASP.NET MVC на удаленный сервер IIS 7 с помощью WebDAV. Я создал сайт в IIS, включил WebDAV и назначил специальный пул приложений, который я назвал «Пул приложений WebDAV». Используя клиент Windows 7 или Vista, я могу подключить удаленный сайт как сетевой диск. Пока все хорошо.

Однако у меня проблемы с загрузкой файлов web.config на удаленный сайт. Одна из проблем заключается в том, что после загрузки web.config он используется для настройки сайта WebDAV. Файл web.config в папке Views проекта MVC фактически блокирует доступ к этой папке.

Чтобы обойти эту проблему, я настроил пул приложений в файле applicationHost.config:

<configuration>
  <applicationPools>
    <add name="WebDAV Application Pool"
       autoStart="true"
       enableConfigurationOverride="false" />
  </applicationPools>
</configuration>

Интересной частью является атрибут 'enableConfigurationOverride`:

Когда true , указывает, что делегированные параметры в файлах Web.config будут обрабатываться для приложений в этом пуле приложений. Если false , все параметры в файлах Web.config будут игнорироваться для этого пула приложений.

Это позволяет загрузить файл web.config в папку Views, не нарушая доступ к папке.

Однако я все еще не могу загрузить файл web.config в корневую папку. У меня есть следующие настройки в файле applicationHost.config, чтобы фильтрация запросов не мешала работе WebDAV:

<configuration>
  <location path="webdav.mysite.tld">
    <system.webServer>
      <security>
        <requestFiltering>
          <fileExtensions applyToWebDAV="false" />
          <verbs applyToWebDAV="false" />
          <hiddenSegments applyToWebDAV="false" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>
</configuration>

В частности hiddenSegments обычно блокирует доступ к web.config, но установка атрибута applyToWebDAV на false должна гарантировать, что этот файл не заблокирован при использовании WebDAV.

К сожалению, я все еще не могу скопировать файл web.config в корневую папку сайта. Перетаскивание в проводнике Windows на подключенный сетевой диск WebDAV приведет к следующему сообщению об ошибке:

Ошибка 0x80070057: неверный параметр.

По проводам кажется, что возвращается HTTP-статус 400 Bad Request.

Что я могу сделать, чтобы настроить WebDAV на IIS 7, чтобы избежать этой проблемы?


Followup

В настоящее время я не могу воспроизвести проблему, описанную выше. Возможно, мне пришлось перезапустить что-то, или какой-то другой неизвестный фактор решил мою проблему. Суть в том, что теперь я могу публиковать веб-сайт с помощью WebDAV.

1 Ответ

0 голосов
/ 07 июня 2010

1) Открыть вверх %windir%\system32\inetsrv\config\schema\WEBDAV_schema

2) Добавить следующее внутри секции configSchema

<sectionSchema name="system.codedom">
  <element name="compilers">
    <collection addElement="compiler" removeElement="remove" clearElement"clear">
      <attribute name="language" type="string" isCombinedKey="true"/>
      <attribute name="extension" type="string" isCombinedKey="true"/>
      <attribute name="type" type="string"/>
      <attribute name="warningLevel" type="int"/>
      <collection addElement="providerOption">
        <attribute name="name" type="string" isUniqueKey="true"/>
        <attribute name="value" type="string"/>
      </collection>
    </collection>
  </element>
</sectionSchema>
...