Я испытываю следующую проблему в IIS6. Я полностью понимаю проблему, я просто ищу лучшее решение.Могу ли я установить свойства «Веб-сайт по умолчанию» через файл web.config дочернего веб-сайта? (IIS6)
У меня есть следующие:
- Default Web Site
- apiservices
- ourwebsite
На сайте 'apiservices' работает под .NET Framework v2.0 все еще. Веб-сайт 'ourwebsite' работает под .NET Framework v4.0 с использованием MVC3.
Приятная новая функция, представленная в .NET 4.0, обработка ссылок без расширения, вызывает некоторые проблемы из-за наших смешанных версий .NET Framework.
Если я иду:
- 'ourwebsite' -> правая кнопка мыши -> Свойства -> вкладка виртуального каталога -> Конфигурация. Я вижу, что существует сопоставление подстановочных приложений для .NET Framework v4.0 aspnet_isapi.dll. Это правильно, но недостаточно из-за нашей настройки.
- 'apiservices' -> правый клик -> свойства -> вкладка виртуального каталога -> конфигурация. Я вижу, что существует сопоставление подстановочных приложений в .NET Framework v2.0 aspnet_isapi.dll Это правильно для нашей установки И не должно быть установлено в 4.0 или оно сломается.
Теперь, здесь ошибка, вносимая в связи с изменениями Microsoft: Поскольку ASP.NET v4.0 Приложение не имеет его подстановочные отображение, определенное на корневом уровне, Default Web Site, PageMethods внутри нашего приложения получить неправильное маршрутизацию и 404.
Сумасшедшая часть? Если я перехожу к:
- «Веб-сайт по умолчанию» -> правый клик -> свойства -> вкладка «Домашний каталог» -> конфигурация. И затем, отсюда, добавьте .NET Framework v4.0 в мои карты приложений подстановочных знаков.
- Я нажимаю OK. Мне предлагается указать, на каких детских сайтах я хочу применить эти изменения, потому что они оба определяют свои собственные сопоставления приложений подстановочных знаков. я указать здесь, что я только хочу, чтобы применить это отображение подстановочных к «ourwebsite», а не «» apiservices
Применение этого изменения решает нашу проблему.
Теперь, мне интересно, как мне это настроить? Является ли это работой файла web.config - может ли он управлять настройками верхнего уровня, как это? Или это задача пользовательского действия нашего установщика?
EDIT: Похоже, мне нужно сделать это с помощью 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>
Оба Сайта работают под одним и тем же пулом приложений в IIS? – Rondel
Нет, у них есть отдельные пулы приложений. –