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

3
ลองแก้ไขไฟล์ csproj หรือ csproj.user แล้วตั้งค่าUseIISExpressเป็น false stackoverflow.com/a/19103452/138938
Jon Crowell

2
@HeadofCatering ฉันเพิ่งมีปัญหานี้ แต่ UseIISExpress ถูกตั้งค่าเป็นเท็จในไฟล์. 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>ทำเคล็ดลับสำหรับฉันด้วย ขอบคุณสำหรับคำแนะนำ!
Dion V.

คำตอบ:


205

การเปิดเป็นผู้ดูแลระบบไม่ได้ช่วยแก้ปัญหาให้ฉัน อะไรคงมันสำหรับฉันคือเปิดทั้ง.csprojและ.csproj.userไฟล์และสร้างความมั่นใจว่าทั้งสองได้ตั้งค่าให้UseIISExpressfalse

ในกรณีของฉันที่.csproj.userไฟล์ถูกเอาชนะ.csprojไฟล์แม้ว่าถูกทำเครื่องหมายSaveServerSettingsInUserFilefalse

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <UseIISExpress>false</UseIISExpress> 
    <!-- ... -->
</Project>

48
ในที่สุดการลบ csproj.user ก็แก้ปัญหาของฉันได้ ขอขอบคุณ!
Bryan Sumter

ขอบคุณมากฉันกำลังก้มหน้ามองการตั้งค่า csproj ทุกอย่างดูดี หลังจากที่ฉันลบไฟล์ csproj.user มันก็เริ่มโหลดโปรเจ็กต์โดยไม่มีการร้องเรียนใด ๆ ++ 1
Esen


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 ของคุณไม่มีรายการที่เกี่ยวข้องกับการตั้งค่าโปรเจ็กต์ของคุณคุณเพียงแค่กดปุ่ม "Create Virtual Directory" และทำ !

หวังว่านี่จะช่วยได้


Visual Studio นี้เป็นเวอร์ชันใด ฉันไม่มีตัวเลือกนี้ใน VS Pro 2013
Matt R

@ Matt R: ฉันมี VS2012 pro ดังนั้นฉันคิดว่ามันจะเหมือนกันสำหรับเวอร์ชันของคุณ ในตัวสำรวจโซลูชันเลือกโครงการ web.application ของคุณคลิกขวาและเลือก "คุณสมบัติ" จากนั้นหน้าต่างแบบแท็บจะปรากฏขึ้นให้เลือกแท็บ "เว็บ" และคุณจะเห็นภาพหน้าจอที่ฉันอยู่ในคำตอบ ... และขออภัยที่ล่าช้า ตอบ!
zobidafly


2

ฉันมีปัญหาเดียวกันสำหรับฉันสิ่งที่ฉันต้องทำคือเปิดสตูดิโอภาพในฐานะผู้ดูแลระบบและสิ่งนี้ช่วยแก้ปัญหาให้ฉันได้

เพียงคลิกขวาที่ visual studio 2012 แล้วคลิก "run as administrator" หวังว่านี่จะช่วยได้


2

สำหรับฉันการรวมกันของทั้งสองทำงานสำหรับ Visual Studio 2015 Preview กับ Windows 7 64 บิต:
1. ลบไฟล์ * .csproj.user และ
2. <UseIISExpress>false</UseIISExpress>ในไฟล์โซลูชัน
ขั้นตอนสำหรับขั้นตอนที่ 2: ใน Visual Studio คลิกขวาที่ Project ==> Unload ===> แก้ไขโซลูชัน


1

แค่นี้ก็เพียงพอแล้ว

แสดงความคิดเห็นบรรทัดนี้ในไฟล์โปรเจ็กต์ x.csproj

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

x.csproj: ข้อผิดพลาด: 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. ในแผงการดำเนินการทางด้านขวาให้คลิกการเชื่อมโยง ...

หากไซต์ของคุณไม่โหลดในเว็บเบราว์เซอร์อาจเป็นเพราะคุณไม่มีรายการในไฟล์โฮสต์ของคุณ:

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>เป็นเท็จในไฟล์ ".csproj" ของโปรเจ็กต์อาจโหลดโปรเจ็กต์ได้ชั่วคราว แต่ค่ากลับเป็น True หลังจากรีสตาร์ทหรือปิดโซลูชัน

การกรอกคำตอบของ @Cyrus (ซึ่งใช้ได้ผลกับฉัน) เพื่อให้ได้คำตอบที่เป็นระเบียบมากขึ้นฉันมุ่งเน้นไปที่ไฟล์ csproj.user ของโปรเจ็กต์มากขึ้นและพบสาเหตุที่แท้จริงของปัญหา: การตั้งค่า<UseIISExpress>true</UseIISExpress>เป็นเท็จจากนั้นโหลดโครงการใหม่ ทำงานได้ดีโดยไม่ต้องลบไฟล์ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.