2014-01-30 8 views
17

У меня есть проект веб-приложения Visual Studio, который по определенным причинам копирует файлы из нескольких проектов в отдельный выходной каталог. Я хочу использовать этот выходной каталог в качестве корня связанного сайта IIS Express. В файле applicationhost.config IIS Express я могу установить физический путь связанного сайта в правильный каталог. Я поставил его так:Как запретить Visual Studio изменять phyical путь сайта IIS Express в applicationhost.config?

<site name="MySiteName" id="42"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="c:\my\desired\path" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:63470:localhost" /> 
    </bindings> 
</site> 

Однако, когда я вновь открыть проект, Visual Studio перезаписывает мой указанный физический путь, возвращаясь его собственный каталог проекта. Хуже того, Visual Studio не дает мне никаких указаний на то, что он это сделал. Вот как <virtualDirectory> элемент выглядит после того, как Visual Studio портит его:

 <virtualDirectory path="/" physicalPath="c:\path\to\project" /> 

Как я могу предотвратить Visual Studio перезаписывать этот путь?

ответ

2

Я не смог предотвратить VS, чтобы переопределить физическое поле для MySiteName, но в качестве обходного пути я добавил еще один раздел приложения с другим путем (скажем, «NewPath») и не обновлял VS, чтобы использовать этот путь под csproj веб-свойства. В этом случае при отладке он автоматически откроет браузер на старом url (http://localhost:63470/), если вы перейдете к новой конечной точке (http://localhost:63470/NewPath), все будет нормально работать, и VS не вернет это.

Таким образом, новая конфигурация выглядит следующим образом:

<site name="MySiteName" id="42"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="c:\path\to\project" /> 
    </application> 
    <application path="/NewPath" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="c:\my\desired\path" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:63470:localhost" /> 
    </bindings> 
</site> 
+1

Это решение не работает в VS2015. После перезапуска VS2015 среда снова перезапишет физическую панель в скопированном разделе приложения. – Simon

4

Visual Studio 2013 и 2015 не меняет физический путь для опции 'Override ApplicationPool URL':

enter image description here

В файле %userprofile%\documents\iisexpress\config\applicationhost.config по умолчанию выглядит следующим образом:

<site name="MyWebSite" id="1477659296"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="C:\Projects\MyWebSite" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:62238:localhost" /> 
     <binding protocol="http" bindingInformation="*:62238:*" /> 
    </bindings> 
</site> 

Просто скопируйте свой блок по умолчанию выше, вставьте его прямо ниже и внесите некоторые изменения. Измените name, id, physicalPath и переопределите URL с дополнительным субдоменом. В моем случае debug:

<site name="MyWebSiteOverwritten" id="99999999"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="C:\Projects\DifferentPath" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:62238:debug.localhost" /> 
    </bindings> 
</site> 

Теперь, когда я начинаю VS и запустить IIS Express, Visual Studio не меняет physicalPath в ApplicationHost.config перезаписанной URL. Это подходит для меня.

Подсказка для Visual Studio 2015: Visual Studio 2015 использует файл YourProject/.vs/config/applicationhost.config и переопределяет его каждый раз, когда вы открываете среду. Откройте файл *.proj и установить следующую запись:

<UseGlobalApplicationHostFile>true</UseGlobalApplicationHostFile> 

С помощью этой конфигурации IIS Express использует свой глобальный хост-файл приложения, расположенный по адресу: %userprofile%\documents\iisexpress\config\applicationhost.config.

 Смежные вопросы

  • Нет связанных вопросов^_^