asp.net, модуль перезаписи URL и web.config

Я использую ASP.net с .NET 3.5 на IIS7 (Vista) с модулем перезаписи URL от Microsoft.

Это означает, что у меня есть

<system.webServer>
    <rewrite>...</rewrite>
    ...
</system.webServer>

раздел в web.config, но я получаю предупреждение, что в system.webServer элемент «перезаписать» не разрешен.

Как я могу настроить свою систему, чтобы разрешить (и, возможно, даже иметь Intellisense) часть перезаписи web.config?

Спасибо, Кристоф.


person Christoph    schedule 12.12.2008    source источник
comment
Я могу подтвердить, что эта проблема все еще возникает в VS2010 и IIS7.5.   -  person David Foster    schedule 18.05.2010
comment
это приводит к сбою сборки моего проекта mvc. довольно плохо.   -  person Brady Moritz    schedule 18.04.2011


Ответы (3)


Мне удалось заставить это работать в Visual Studio 2010.

Начните с поста Руслана здесь и загрузите файл IntelliSense версии 2.0. Затем просто следуйте инструкциям, которые он опубликовал ранее здесь. Все, что я сделал, это выполнил следующую команду, как инструктирует Руслан:

C:\download_directory\rewrite2_intellisense>cscript UpdateSchemaCache.js

Как указывает Кристоф в своем комментарии, убедитесь, что вы заменили VS90COMNTOOLS на VS100COMNTOOLS в UpdateSchemaCache.js, прежде чем запускать указанную выше команду, если вы используете Visual Studio 2010.

Мне не нужно было перезапускать Visual Studio. Я добавил раздел <rewrite> только к применимым файлам преобразования Web.config, так как его наличие в основном файле Web.config прерывает локальную отладку.

person Jonathan Freeland    schedule 15.08.2010
comment
Привет Джон, спасибо за ссылку. Хорошо работает в vs2010, но имейте в виду, что если вы используете vs2010, вам нужно изменить в UpdateSchemaCache.js VS90COMNTOOLS на VS100COMNTOOLS (подсказка для других пользователей :-)) - person Christoph; 16.08.2010
comment
Привет Джонатан. Об этом преобразовании web.config - как выглядит ваше? Единственный способ, который я вижу, это добавить второй раздел system.webServer, содержащий ‹rewrite› и ‹rules›. Я бы не стал добавлять второй раздел ‹system.webServer›. У вас есть более элегантный способ? - person Eric; 07.01.2011
comment
@Jon FreeLand - я получаю эту ошибку (хотя я запускаю ее в командной строке от имени администратора) Не удалось открыть файл Xml\Schemas\DotNetConfig.xsd. Убедитесь, что сценарий запущен в командной строке с повышенными привилегиями. - person chobo2; 21.02.2012
comment
Я тоже. Есть ли проблема с экспресс-версией VS 2010? - person Tillito; 28.02.2012
comment
Извините, ребята, я не знаю, будет ли это работать с Express. Я использую Ultimate. - person Jonathan Freeland; 28.02.2012
comment
Эта статья парней разочаровывает следовать. Он дает вам код перезаписи, но не говорит вам, где именно его разместить в файле web.config. - person The Muffin Man; 09.03.2013
comment
Сайт Руслана пропал. Есть ли другой способ сделать это? - person jp2code; 20.07.2015

Я считаю, что вам нужно, чтобы модуль перезаписи URL-адресов был «установлен» в файле web.config в вашей системе.

Вам либо нужно установить модуль в свое приложение через интерфейс IIS 7.0, либо ваша хостинговая компания сделает это за вас.

person Randy Burgess    schedule 15.05.2009
comment
нет, я несколько раз устанавливал модуль перезаписи на несколько машин (Vista и Win7) через установщик веб-платформы 2.0 и собственный установщик с IIS.net. - person Christoph; 22.05.2009

Я считаю, что вам нужно определить модуль в вашем файле web.config следующим образом:

<system.webServer>
    <modules>
        <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    </modules>
</system.webServer>

Обновление: Intellisense можно настроить здесь:

http://ruslany.net/2009/08/visual-studio-xml-intellisense-for-url-rewrite-1-1/

Обновление: убедитесь, что sectionGroup идентифицирован в %systemroot%\system32\inetsrv\config\applicationHost.config:

<sectionGroup name="rewrite">
    <section name="rules" overrideModeDefault="Allow" />
    <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
    <section name="rewriteMaps" overrideModeDefault="Allow" />
</sectionGroup>
person mellamokb    schedule 28.11.2009
comment
Привет, у меня есть это (для перезаписи 2,.0): ‹sectionGroup name=rewrite› ‹section name=rules overrideModeDefault=Allow /› ‹section name=globalRules overrideModeDefault=Deny allowDefinition=AppHostOnly /› ‹section name=outboundRules overrideModeDefault= =Allow /› ‹section name=providers overrideModeDefault=Allow /› ‹section name=rewriteMaps overrideModeDefault=Allow /› ‹/sectionGroup›, но проблема все еще существует... - person Christoph; 03.12.2009