Могу ли я установить свойства "Веб-сайта по умолчанию" через файл web.config дочернего веб-сайта? (IIS6) - PullRequest
2 голосов
/ 17 февраля 2012

Возникла следующая проблема в IIS6. Я полностью понимаю проблему, я просто ищу лучшее решение.

У меня есть следующее:

  • Веб-сайт по умолчанию
    • apiservices
    • ourwebsite

Сайт apiservices все еще работает под .NET Framework v2.0. Веб-сайт «наш веб-сайт» работает под управлением .NET Framework v4.0 с использованием MVC3.

Новая замечательная функция, появившаяся в .NET 4.0, обработка URL без расширения, вызывает у нас некоторые проблемы из-за наших смешанных версий .NET Framework.

Если я пойду на:

  • 'наш сайт' -> щелчок правой кнопкой мыши -> свойства -> вкладка виртуального каталога -> конфигурация. Я вижу, что существует универсальное сопоставление приложения с .NET Framework v4.0 aspnet_isapi.dll. Это правильно, но недостаточно из-за нашей настройки.
  • 'apiservices' -> щелчок правой кнопкой мыши -> свойства -> вкладка виртуального каталога -> конфигурация. Я вижу, что существует универсальное сопоставление приложения с .NET Framework v2.0 aspnet_isapi.dll Это правильно для нашей установки И не должно быть установлено на 4.0, иначе оно сломается.

Теперь вот ошибка, возникшая из-за изменений в Microsoft: Поскольку у приложения ASP.NET v4.0 нет подстановочного сопоставления, определенного на корневом уровне, веб-сайт по умолчанию, PageMethods внутри нашего приложения получают неправильно маршрутизируется и 404.

Сумасшедшая часть? Если я пойду на:

  • «Веб-сайт по умолчанию» -> щелчок правой кнопкой мыши -> свойства -> вкладка «Домашний каталог» -> конфигурация. Затем добавьте .NET Framework v4.0 к моим картам приложений Wildcard.
  • Я нажимаю ОК. Мне предлагается указать, к каким дочерним веб-сайтам я хочу применить эти изменения, потому что они оба определяют свои собственные сопоставления подстановочных приложений. Здесь я указываю, что хочу использовать это сопоставление только для «нашего веб-сайта», а не для «apiservices»

Применение этого изменения решает нашу проблему.

Теперь мне интересно, как мне настроить это? Это работа файла web.config - может ли он управлять настройками верхнего уровня, как это? Или это работа нашего установщика по индивидуальному заказу?

РЕДАКТИРОВАТЬ: Похоже, мне нужно сделать это с помощью WIX. В настоящее время у меня есть код ниже, чтобы установить карту подстановки на дочернем уровне. Я изучаю способы установки его на корневом уровне без перезаписи подстановочного сопоставления «apiservices»:

<iis:WebVirtualDir Id="CSWebVirtualDir" Alias="[TARGETCSWEBVDIR]" Directory="CABLESOLVEWEBDIR" WebSite="DefaultWebSite">
    <iis:WebApplication Id="CSWebApplication" Name="[TARGETCSWEBVDIR]" AllowSessions="yes" ParentPaths="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium">
        <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" />
    </iis:WebApplication>
    <iis:MimeMap Id="MIMEXAP" Type="application/x-silverlight-app" Extension=".xap" />
    <iis:MimeMap Id="MIMEXAML" Type="application/xaml+xml" Extension=".xaml" />
</iis:WebVirtualDir>

<iis:WebVirtualDir Id="CSWebAPIVirtualDir" Alias="[TARGETCSWEBAPIVDIR]" Directory="CABLESOLVEWEBAPIDIR" DirProperties="CSWebAPIVirtualDirProperties" WebSite="DefaultWebSite">
    <iis:WebApplication Id="CSWebAPIApplication" Name="[TARGETCSWEBAPIVDIR]" ParentPaths="yes" AllowSessions="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAPIAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium">
        <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" />
    </iis:WebApplication>
</iis:WebVirtualDir>

1 Ответ

0 голосов
/ 18 февраля 2012

Нашим решением было добавить эти шаги в наше руководство по установке. Мне не удалось определить способ простой модификации веб-сайта по умолчанию.

...