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

У меня есть проект 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.

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

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

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

Ответ 1

Открытие в качестве администратора не помогло мне решить эту проблему. Для меня было установлено открытие файлов .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>

Ответ 2

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

Ответ 3

Я установил " 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 settings

это то же самое, что и редактирование файла 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 не содержит запись, связанную с вашими настройками проекта, вам просто нужно нажать кнопку "Создать виртуальный каталог" и сделать это!

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

Ответ 5

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

Ответ 6

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

так просто щелкнуть правой кнопкой мыши на visual studio 2012 и нажать "запустить как администратор". надеюсь, что это поможет

Ответ 7

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

Ответ 8

Этого достаточно

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

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

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

Ответ 9

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

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

  • В IIS 7 выберите сайт в левой панели навигации.
  • На панели "Действия" справа нажмите Привязки...

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

127.0.0.1    myproject.mycompany.local

Ответ 10

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

ProjectSection(WebsiteProperties) = preProject
    UseIISExpress = "false"

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

Ответ 11

Эта проблема сегодня разрушила мой день в 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>

Ответ 12

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

Настройка <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 Name</NameOfLastUsedPublishProfile>
  </PropertyGroup>