VS 2012 не может загрузить проект, который использует IIS с настраиваемым узлом привязки - думает, что использует IIS Express

85

У меня есть проект ASP.NET, который использует IIS. Сайт IIS настроен на использование имени узла настраиваемой привязки. Файл проекта содержит следующие настройки:

...
<UseIISExpress>false</UseIISExpress>
...
<ProjectExtensions>
  <VisualStudio>
    <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
      <WebProjectProperties>
        <UseIIS>True</UseIIS>
        <AutoAssignPort>False</AutoAssignPort>
        <DevelopmentServerPort>8662</DevelopmentServerPort>
        <DevelopmentServerVPath>/</DevelopmentServerVPath>
        <IISUrl>http://custom.host.name/</IISUrl>
        <NTLMAuthentication>False</NTLMAuthentication>
        <UseCustomServer>False</UseCustomServer>
        <CustomServerUrl></CustomServerUrl>
        <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
      </WebProjectProperties>
    </FlavorProperties>
  </VisualStudio>
</ProjectExtensions>
...

Когда проект настроен таким образом, я могу получить доступ к сайту, http://custom.host.name/а VS автоматически подключается к рабочему процессу IIS при отладке.

Когда я перезагружаю проект (либо путем закрытия / повторного открытия решения, либо путем выгрузки / перезагрузки в контекстном меню проекта) происходит что-то неожиданное. Проект не загружается, (load failed)отображается справа от имени проекта в обозревателе решений, а в окне сообщения отображается следующее сообщение (оно также отображается в окне вывода):

The URL 'http://custom.host.name/' for Web project 'Some.Asp.Net.Project' 
is configured to use IIS Express as the web server but the URL is currently
configured on the local IIS web server. To open this project, you must use
IIS Manager to remove the bindings using this URL from the local IIS web server.

Я попытался удалить конфигурацию сайта проекта из applicationhost.configфайла IIS Express , но это не помогло.

Я не сталкиваюсь с этой проблемой при сопоставлении проекта с приложением IIS на сайте по умолчанию.

Версия VS - Ultimate 2012 Update 3.

Игорь Антонов
источник
3
Да, у меня такая же проблема с VS2013, так как я однажды использовал IIS Express в этом проекте ... Действительно раздражает!
kipusoep 01
3
Попробуйте отредактировать файлы csproj или csproj.user и установить UseIISExpressзначение false. stackoverflow.com/a/19103452/138938
Джон Кроуэлл
2
@HeadofCatering, у меня только что возникла эта проблема, но UseIISExpress уже был установлен на false в файле проектов .csproj. Однако простой поиск IIS привел меня к тому, что я нашел XML-тег «<UseIIS> True </UseIIS>» внутри файла csproj (в <ProjectExtensions><VisualStudio><FlavorProperties> <WebProjectProperties>) и просто установил для него значение «< UseIIS> True </UseIIS> "сделал так, чтобы Visual Studio могла снова загрузить проект. Надеюсь, у этого не было других непредвиденных эффектов!
mgrandi
2
@mgrandi Обратите внимание на опечатку; установка <UseIIS>True</UseIIS>на <UseIIS>False</UseIIS>тоже помогала мне. Спасибо за предложение!
Дион В.

Ответы:

205

Открытие в качестве администратора не решило для меня проблему. Что установил ее для меня было открытие , как.csproj и .csproj.userфайлы и обеспечения того , чтобы оба UseIISExpressустановлен false.

В моем случае .csproj.userфайл заменял .csprojфайл, хотя SaveServerSettingsInUserFileбыл отмечен false.

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>
Иона
источник
48
Удаление csproj.user наконец решило мою проблему. Спасибо!
Брайан Самтер
Спасибо большое, ломал голову просматривая настройки csproj. Все выглядело хорошо. После того, как я удалил файл csproj.user, он начал загружать проект без каких-либо жалоб ++ 1
Esen
47

Решение: удалить *.csproj.userфайл!

Сайрус
источник
НО после удаления *.csproj.userредактировать *.csproj
нельзя
21

Я установил для SaveServerSettingsInUserFile значение True, и у меня это сработало.

<ProjectExtensions>
<VisualStudio>
  <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
    <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>50584</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:50584/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>True</SaveServerSettingsInUserFile>
    </WebProjectProperties>
  </FlavorProperties>
</VisualStudio>

Источник: нажмите здесь

Лиакат Али Мондол
источник
4

когда вы используете разрешить использование для IISexpress, applicationHost.Config (находится в% userprofile% \ iisexpress \ config), вы должны установить флажок «Применить настройки сервера ко всем пользователям (сохранить в файле проекта)», чтобы избежать записи ваших настроек в yourProject.csproj.user настройки проекта

это то же самое, что редактировать файл project.csproj и писать. <WebProjectProperties> <UseIIS>True</UseIIS> <AutoAssignPort>True</AutoAssignPort> <DevelopmentServerPort>62242</DevelopmentServerPort> <DevelopmentServerVPath>/</DevelopmentServerVPath> <IISUrl>http://localhost:8100/Claims/</IISUrl> <OverrideIISAppRootUrl>True</OverrideIISAppRootUrl> <IISAppRootUrl>http://localhost:8100/Claims/</IISAppRootUrl> <NTLMAuthentication>False</NTLMAuthentication> <UseCustomServer>False</UseCustomServer> <CustomServerUrl></CustomServerUrl> <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> </WebProjectProperties> Если вы включили IISExpress и ваш файл applicationHost.config не содержит записи, связанной с настройками вашего проекта, вам просто нужно нажать кнопку «Создать виртуальный каталог» и готово !

надеюсь это поможет

зобидафлы
источник
Что это за версия Visual Studio? У меня нет этой опции в VS Pro 2013
Мэтт Р.
@Matt R: Я получил VS2012 pro, так что я предполагаю, что он будет таким же для вашей версии. в обозревателе решений выберите проект web.application, щелкните правой кнопкой мыши и выберите «Свойства» - затем появится окно с вкладками, выберите вкладку «Интернет», и вы должны увидеть снимок экрана, который я вложил в ответ ... и извините за опоздание ответ!
zobidafly
3

В моем случае удаление файла * .csproj.user работало нормально

Хаддис
источник
2

У меня была такая же проблема, для меня все, что мне нужно было сделать, это открыть визуальную студию в качестве администратора, и это решило проблему для меня.

так просто щелкните правой кнопкой мыши Visual Studio 2012 и выберите «Запуск от имени администратора». надеюсь это поможет

Гаутам Бери
источник
2

Для меня комбинация обоих работала для Visual Studio 2015 Preview с 64-разрядной
версией Windows 7: 1. удалить файл * .csproj.user и
2. <UseIISExpress>false</UseIISExpress>в файле решения.
Шаги для шага 2: в Visual Studio щелкните правой кнопкой мыши Project ==> Unload ===> Edit the Solution

Сунил Ядав
источник
1

Достаточно

Прокомментируйте эту строку в файле проекта x.csproj

<!--<UseIIS>True</UseIIS>-->

x.csproj: error: URL-адрес http: // localhost / x для веб-проекта «x» настроен на использование IIS Express в качестве веб-сервера, но URL-адрес в настоящее время настроен на локальном веб-сервере IIS. Чтобы открыть этот проект, необходимо использовать диспетчер IIS, чтобы удалить привязки с помощью этого URL-адреса с локального веб-сервера IIS.

самар самар
источник
1

Я приземлился здесь, когда проект, настроенный для использования IIS, не загружался, потому что он не мог найти веб-сайт (myproject.mycompany.local), хотя веб-сайт нормально загружался в моем веб-браузере.

Решением было убедиться, что для привязки сайта в IIS 7 для имени хоста задано значение «myproject.mycompany.local». Чтобы перейти к привязкам вашего сайта:

  1. В IIS 7 выберите сайт на левой панели навигации.
  2. На панели Действия справа щелкните Привязки ...

Если ваш сайт также не загружается в веб-браузере, вероятно, это связано с тем, что у вас нет записи для него в вашем файле hosts:

127.0.0.1    myproject.mycompany.local
Сет
источник
1

Если ваш проект является частью решения, откройте файл решения (.sln) и отредактируйте раздел проекта.

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

Это сработало для меня.

Г-н Нсубуга
источник
0

Эта проблема испортила мне день в VS 2013 сегодня. Я пробовал все вышеперечисленное, но не загружал проект, пока не создал веб-сайт в IIS и не заполнил этот раздел в файле .csproj (особенно элемент IISUrl):

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
        <WebProjectProperties>
          <UseIIS>True</UseIIS>
          <AutoAssignPort>True</AutoAssignPort>
          <DevelopmentServerPort>81</DevelopmentServerPort>
          <DevelopmentServerVPath>/</DevelopmentServerVPath>
          <IISUrl>http://localhost/SomeProject</IISUrl>
          <NTLMAuthentication>False</NTLMAuthentication>
          <UseCustomServer>False</UseCustomServer>
          <CustomServerUrl>
          </CustomServerUrl>
          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>

Эрик Фарр
источник
в этом есть смысл. Однако я не мог заставить это работать.
Winnemucca
0

У меня была такая же проблема, работа с правами администратора у меня не работала.

Установка значения <UseIIS>True</UseIIS>false в файле проекта ".csproj" временно могла загружать проект, но значение возвращалось к True после перезапуска или закрытия решения.

Завершив ответ @Cyrus (который сработал для меня) для более аккуратного ответа, я сосредоточился больше на файле проекта csproj.user и нашел точный источник проблемы: установил <UseIISExpress>true</UseIISExpress>значение false, а затем перезагрузил проект. работает нормально, без удаления файла csproj.user. результат такой:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectView>ProjectFiles</ProjectView>
    <UseIISExpress>false</UseIISExpress>
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
    <NameOfLastUsedPublishProfile>My Project's Name</NameOfLastUsedPublishProfile>
  </PropertyGroup>
Хома Пурмохаммади
источник
Следует упомянуть, что в моем случае каждый раз, когда я обычно открываю Visual Studio (не как администратор), настройки IIS возвращаются, и мне нужно снова выполнять задачи.
Homa Pourmohammadi