2012-01-04 3 views
106

Есть ли способ создать виртуальный каталог в IIS express? Я знаю, что Cassini не может этого сделать, и было бы неплохо сделать это, не используя полную версию IIS.Создание виртуальных каталогов в IIS express

У меня это до сих пор, что я могу перейти к моему заявлению на местном уровне в IIS выразить так:

http://localhost:1132/

То, что я хотел бы сделать, это создать виртуальный каталог под названием «OffSiteStuff» и указать его в какое-то место на моем диске C, как «C: \ offsitestuff», а затем перейдите к элементам в этой папке, как это:

http://localhost:1132/OffSiteStuff/UserUploadedImage.jpg

Я знаю, что я мог бы сделать это с папкой в ​​моем сайт и по-прежнему использовать IIS Express, или, если на то пошло, обычный старый Cassini, но в этой папке будут храниться изображения, загруженные пользователями, и я действительно не хочу смешивать эти изображения с файлами приложений.

Другое решение «go big» - это развернуть сайт на полномасштабном экземпляре Server 2008 IIS 7.5 каждый раз, когда я хочу отлаживать функции, которые используют внешний контент, но это тоже немного громоздко.

Есть ли способ, которым я могу это сделать в <System.WebServer /> Элемент веб-конфигурации?

+4

Для Visual Studio 2015, https: //mikedice417.wordpress.com/2015/09/13/vs-2015-and-you-must-define-localhost-for-the-server-name/работал. Файл 'applicationHost.config' находится под корнем проекта:' $ {PROJECT} \. Vs \ config \ applicationHost.config'. – Matt

+0

Здесь есть ответ, который может вам помочь: [https://stackoverflow.com/a/46260607/2472664](https://stackoverflow.com/a/46260607/2472664) –

ответ

121

Конфигурация IIS express управляется приложениемhost.config.
Вы можете найти его в

Users \ имя пользователя <> \ Documents \ IISExpress \ папку конфигурации.

Внутри вы можете найти раздел сайтов, в котором есть раздел для каждого настроенного сайта IIS Express.

Добавить (или изменить) сайт раздел как это:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    </application> 
    <application path="/OffSiteStuff" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Практически вам нужно добавить новый тег приложения на вашем сайте для каждого виртуального каталога. Вы получаете большую гибкость, потому что вы можете установить различные конфигурации для виртуального каталога (например, различные версии .NET Framework)

EDIT Благодаря Февзи Апайдин, чтобы указать на более элегантное решение.

Вы можете достичь такого же результата путем добавления одного или более VirtualDirectory тега в тег Application:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Ссылка:

+0

После добавления каждого тега приложения для каждого виртуального Я не смог запустить приложение «offsitestuff». Ex: iisexpress/site: WebSiteWithVirtualDirectory - запустить первое приложение из пути «C: \ temp \ website1». Как я могу запустить мое второе приложение, которое содержит путь «d: \ temp \ SubFolderApp» – Velu

+0

В разделе «Связывание» вы видите URL-адрес и порт, используемые для доступа к корню вашего сайта. Итак: http: // localhost: 1132 - это URL-адрес веб-приложения, установленного в c: \ temp \ website1 http: // localhost: 1132/OffSiteStuff - это URL-адрес веб-приложения, установленного в d: \ temp \ SubFolderApp , –

+0

Кто-нибудь знает, если/как я могу настроить параметры отдельно для каждого проекта (так что я могу проверить конфигурацию)? Спасибо –

0

я имел что-то иначе, сами файлы, где недоступны в среде SBS.

Удалить файлы в папке config (если вы не можете их открыть!) и замените их копией папки на вашем локальном компьютере.

Fixed это для меня :)

+0

Файлы в пользователях \ \ Documents \ IISExpress \ config защищены для каждого пользователя. Возможно, вы попытались отредактировать его другим пользователям. Поэтому для его редактирования вам нужно запустить Notepad (или ваш редактор) в режиме администрирования. Таким образом, вы можете изменить его. Или удалите и скопируйте, как и вы :-) –

80

@ aprroach Be.St. верна, но неполная. Я просто копирую его объяснение с исправлением неправильной части.

Конфигурация IIS express управляется приложением application.config.
Вы можете найти его в

Users \ имя пользователя <> \ Documents \ IISExpress \ папку конфигурации.

Внутри вы можете найти раздел сайтов, в котором есть раздел для каждого настроенного сайта IIS Express.

Добавить (или изменить) сайт раздел как это:

<site name="WebSiteWithVirtualDirectory" id="20"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
    <virtualDirectory path="/" physicalPath="c:\temp\website1" /> 
    <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:1132:localhost" /> 
    </bindings> 
</site> 

Вместо добавления нового блока приложения, вы должны просто добавить новый элемент VirtualDirectory в приложение родительского элемента.

Edit - Visual Studio 2015

Если вы ищете файл applicationHost.config и вы используете VS2015 вы найдете его в:

[solution_directory]/.vs/конфигурации/applicationHost.config

+3

Есть ли способ применить это в проекте Visual Studio? В среде с несколькими разработчиками, если кто-то еще проверит код на своем компьютере, то их локальный IIS Express не будет настроен с виртуальным каталогом и вызовет ошибки времени выполнения, не так ли? – ahillier88

+4

В Visual Studio 2015 конфигурационный файл IIS хранится в каталоге решений в папке с именем .vs/config, поэтому вы можете проверить его в исходном элементе управления, если хотите. –

+0

Так много не-ответов наводнения google результаты по этому вопросу относительно VS 2012. Это работает !!!! –

6

в VS2013 я сделал это в следующих шагах:

1.Правой щелкните проект веб-приложения и нажмите Свойства

2.View вкладка «Web» на странице свойств

3.Under Серверы, с «IIS Express» быть по умолчанию выбор из выпадающего списка, в «Project Url» измените URL-адрес, используя номер порта, который подходит вам. Например, я удалил номер порта и добавил «/ MVCDemo4» после локального хоста.

4. Нажмите кнопку «Создать виртуальный каталог».

5.Run ваш проект и новый URL будет использоваться

+0

Это не позволяет настроить физический путь. –

0

Если вы используете Visual Studio 2013 (может потребоваться версия Pro или выше), я смог добавить виртуальный каталог на веб-сайт IIS Express (на основе файлов), щелкнув правой кнопкой мыши на веб-сайте в обозревателе решений и нажмите «Добавить»> «Новый виртуальный каталог». Это добавило запись в файл applicationhost.config, как в описанных здесь ручных методах.

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