วิธีเปิดใช้งานคำขอภายนอกใน IIS Express


466

ฉันจะเปิดใช้งานการร้องขอระยะไกลใน IIS Express ได้อย่างไร Scott Guthrie เขียนว่าเป็นไปได้แต่เขาไม่ได้พูดอย่างนั้น


25
มีนามสกุล VS ฟรีสำหรับสิ่งนี้ที่เราเขียนvisualstudiogallery.msdn.microsoft.com/…
จิม W กล่าวว่าการคืนสถานะโมนิก้า

@JimW Jim คุณเป็นผู้สร้างปลั๊กอินหรือไม่ คุณช่วยอธิบายความมหัศจรรย์ของวิศวกรรมซอฟต์แวร์นี้ได้อย่างไร?
Ian Warburton

@IanWarburton ขอบคุณที่เรียกมันว่าปาฏิหาริย์! มันเป็น reverse proxy server
Jim W กล่าวว่าคืนสถานะโมนิก้า

@JimW ขอบคุณที่สร้างมันขึ้นมา
Ian Warburton

@ JimW ฉันลองใช้ปลั๊กอินของคุณและทำทุกอย่างเหมือนที่คุณพูดในการกวดวิชา แต่ฉันไม่สามารถ
โฮสต์

คำตอบ:


403

มีบล็อกโพสต์ขึ้นบนเว็บไซต์ทีม IIS ตอนนี้อธิบายวิธีการเปิดใช้งานการเชื่อมต่อระยะไกลบน IIS ด่วน นี่คือส่วนที่เกี่ยวข้องของการโพสต์สรุป:

บน Vista และ Win7 ให้เรียกใช้คำสั่งต่อไปนี้จากพรอมต์การจัดการ:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

สำหรับ XP ขั้นแรกให้ติดตั้งเครื่องมือสนับสนุน Windows XP Service Pack 2 จากนั้นเรียกใช้คำสั่งต่อไปนี้จากพรอมต์การดูแลระบบ:

httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)


121
ในกรณีที่เกิดข้อผิดพลาด 503 ให้ดูสิ่งนี้: stackoverflow.com/questions/5442551/…
Deerchao

5
มีnetshคำสั่งเพื่อให้การเชื่อมต่อบนใด ๆชื่อโฮสต์?
พันเอก Panic

33
สำหรับบันทึกในกรณีที่คุณมีเครื่อง Windows ในภาษาที่ไม่ใช่ภาษาอังกฤษพารามิเตอร์ของuser={PARAM_USER}จะเป็นภาษาของคุณเอง
GoRoS

7
การใช้อักขระตัวแทนในพารามิเตอร์ url (เช่น url = http: // *: 8080 /) จะทำให้การเชื่อมต่อใช้งานได้ทั้งชื่อโฮสต์และที่อยู่ IP ของคอมพิวเตอร์
Anders

2
ในกรณีที่คำสั่งล้มเหลว (อาจเป็นข้อผิดพลาด 1789) พิจารณาว่าคำสั่งคาดหวังสำหรับผู้ใช้ในภาษาพีซีของคุณ ดังนั้นหากคอมพิวเตอร์ของคุณในภาษาโปรตุเกสเช่นใช้แทนuser=todos user=everyone
Vitor Canova

350

คุณอาจต้องทำการเปลี่ยนแปลงสามอย่าง

  1. บอก IIS Express เพื่อผูกกับที่อยู่ IP และชื่อโฮสต์ทั้งหมด ใน.configไฟล์ของคุณ โดยปกติ:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015: %userprofile%\My Documents\IISExpress\config\applicationhost.config

ค้นหาองค์ประกอบการรวมเว็บไซต์ของคุณและเพิ่ม

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. ติดตั้งบิต Windows ที่เรียกว่า 'http.sys' ในฐานะผู้ดูแลระบบให้รันคำสั่ง:
    netsh http add urlacl url=http://*:8080/ user=everyone

everyoneกลุ่ม windows อยู่ที่ไหน ใช้เครื่องหมายคำพูดคู่สำหรับกลุ่มที่มีช่องว่างเช่น "Tout le monde"

  1. อนุญาตให้ IIS Express ผ่านไฟร์วอลล์ Windows

    เริ่ม / ไฟร์วอลล์ Windows ด้วยความปลอดภัยขั้นสูง / กฎขาเข้า / กฎใหม่ ...

    โปรแกรม%ProgramFiles%\IIS Express\iisexpress.exe
    หรือพอร์ต 8080 TCP

ตอนนี้เมื่อคุณเริ่มiisexpress.exeคุณควรเห็นข้อความเช่น

URL ที่ลงทะเบียนเรียบร้อยแล้ว "http: // *: 8080 /" สำหรับไซต์ "hello world" แอปพลิเคชัน "/"


22
หมายเหตุหากคุณใช้ Windows รุ่นที่แปลเป็นภาษาท้องถิ่นพารามิเตอร์users=everyoneสำหรับnetsh(ขั้นตอนที่สอง) อาจทำให้เกิดข้อผิดพลาด 1789 วิธีแก้ไขคือแปลeveryoneเป็นชื่อกลุ่มที่เกี่ยวข้องในภาษาของคุณ
mflodin

5
คุณจะรับโครงการ Visual Studio เพื่อยอมรับการเชื่อมโยงนั้นได้อย่างไร ในคุณสมบัติโครงการที่คุณระบุProject Urlถ้าฉันใส่เครื่องหมายดอกจันสำหรับชื่อโฮสต์จะให้ข้อผิดพลาด หากฉันป้อนสิ่งอื่นใดก็จะพยายามสร้างไดเรกทอรีเสมือนใหม่ มันไม่ได้ลิงค์ไปยังรายการใน application.config
เทรเวอร์เอลเลียต

20
จะทำให้การทำงานใน Visual Studio คุณต้องใช้ชื่อโฮสต์ของคอมพิวเตอร์ของคุณในขั้นที่ 1 bindingInformation="*:8080:hostname"และขั้นตอนที่ 2 url=http://hostname:8080/และใน Visual Studio คุณสมบัติของโครงการเว็บของคุณในเว็บแท็บตั้งโครงการ URL http://hostname:8080/ไปยัง ลบ*urlacl หากคุณสร้างไว้แล้ว มันจะไม่ทำงานถ้าคุณมีทั้งคู่ สุดท้าย URL ที่คุณไปในเว็บเบราว์เซอร์ของคุณจะต้องอ้างอิงชื่อโฮสต์ไม่ใช่โลคอลโฮสต์
Joe Daley

5
ฉันต้องมี localhost line ในองค์ประกอบ bindings เช่นกัน visual studio 2013 พยายามสร้างรายการไซต์ซ้ำ เช่น:<binding protocol="http" bindingInformation="*:8080:localhost" />
kristianp

3
ฉันจำเป็นต้องเรียกใช้ Visual Studio ในฐานะผู้ดูแล แต่คำตอบนี้ละเอียดที่สุด
dlsso

127

ฉันจำได้ว่าพบปัญหาเดียวกันในขณะที่พยายามเวิร์กโฟลว์นี้เมื่อไม่กี่เดือนที่ผ่านมา

ซึ่งเป็นเหตุผลที่ผมเขียนยูทิลิตี้พร็อกซี่ที่เรียบง่ายโดยเฉพาะสำหรับชนิดของสถานการณ์นี้: https://github.com/icflorescu/iisexpress-proxy

การใช้IIS Express Proxyทั้งหมดจะกลายเป็นเรื่องง่าย - ไม่จำเป็นต้อง“ netsh http เพิ่ม urlacl url = vaidesg: 8080 / ผู้ใช้ = ทุกคน” หรือทำกับ“ applicationhost.config” ของคุณ

เพียงแค่ออกในพรอมต์คำสั่ง:

iisexpress-proxy 8080 to 3000

... แล้วคุณสามารถชี้อุปกรณ์ระยะไกลของคุณเพื่อhttp: // vaidesg: 3000

ส่วนใหญ่แล้วจะง่ายกว่าดีกว่า


3
ขอบคุณสำหรับทางออกที่ยอดเยี่ยม!
ฤดูร้อน - เวลา

1
และฉันอาจเพิ่มโซลูชัน Node.js เช่นนี้เป็นโซลูชันเดียวที่ทำงานได้อย่างน่าเชื่อถือบน Azure เนื่องจาก Azure สร้างอัตโนมัติสร้างไฟล์ applicationhost.config และลบการเชื่อมโยงของคุณ
TheHansinator

1
ฉันเริ่มใช้ IIS Express Proxy บน Mac ของฉันพร้อมกับ ngrok หลังจาก ngrok ไม่ทำงานตามที่คาดไว้ (เพราะฉันไม่ได้จัดการการกำหนดค่า IIS Express ที่จำเป็น) มีประโยชน์มาก! ขอบคุณ.
codingoutloud

1
นี่คือทางออกที่ง่ายที่สุด ฉันไม่ต้องการยุ่งกับ applicationhost.config ถ้าฉันไม่ต้อง
skalpin

4
ทางออกที่ดีเยี่ยม! ตอนนี้ย้อนกลับไปและเลิกทำระเบียบที่ฉันทำจาก IIS Express ของฉัน
Mitch Stewart

123

ไม่มีอะไรทำงานให้ฉันจนกว่าฉันจะพบiisexpress-พร็อกซี่

เปิดพร้อมท์คำสั่งในฐานะผู้ดูแลระบบจากนั้นเรียกใช้

npm install -g iisexpress-proxy

แล้วก็

iisexpress-proxy 51123 to 81

สมมติว่าโครงการ Visual Studio ของคุณเปิดใน localhost: 51123 และคุณต้องการเข้าถึงที่อยู่ IP ภายนอก xxxx: 81

แก้ไข: ฉันกำลังใช้ ngrok


7
วิธีแก้ปัญหาที่ไม่เจ็บปวด
บาฮาดีร์

4
ทางออกที่ง่ายที่สุดที่ฉันหาได้ อาจจะเปลี่ยนชื่อแพคเกจเพื่อสิ่งที่ต้องการเว็บพร็อกซี่ตั้งแต่ที่คุณสามารถใช้งานได้นานกว่าการส่งต่อ iisexpress :)
มาริโอ Tacke

8
@xgp - สวัสดีฉันเป็นผู้เขียน iisexpress-proxy :-) คุณจัดการเพื่อให้มันทำงานให้คุณในท้ายที่สุด? คุณต้องปิด & เปิดพรอมต์คำสั่งอีกครั้งหรือในกรณีที่เกิดขึ้นไม่บ่อยนักให้รีสตาร์ทระบบปฏิบัติการ วางฉันลงในหน้าโครงการ ( github.com/icflorescu/iisexpress-proxy ) หากคุณมีคำถามเพิ่มเติมและฉันจะพยายามช่วยถ้าฉันมีเวลา
Ionut-Cristian Florescu

1
ขอบคุณทุกท่านที่ใช้มันและคำพูดของคุณ :-) @MarioTacke - ใช่ฉันรู้ แต่มีคนอีกมากที่สามารถค้นหาได้โดย google-ing ถ้าเรียกว่า iisexpress-proxy :-)
Ionut-Cristian Florescu

1
Btw สิ่งนี้ใช้ไม่ได้กับการตรวจสอบสิทธิ์ของ Windows
Tom

35

ในฐานะที่เป็น sidenote นี้:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

สิ่งนี้จะใช้ได้กับ Windows รุ่นภาษาอังกฤษเท่านั้น หากคุณใช้เวอร์ชันที่แปลเป็นภาษาท้องถิ่นคุณต้องแทนที่ "ทุกคน" ด้วยอย่างอื่นเช่น:

  • "Iedereen" เมื่อใช้รุ่นภาษาดัตช์
  • "Jeder" เมื่อใช้เวอร์ชันภาษาเยอรมัน
  • "Mindenki" เมื่อใช้รุ่นภาษาฮังการี

มิฉะนั้นคุณจะได้รับข้อผิดพลาด (สร้าง SDDL ล้มเหลวข้อผิดพลาด: 1332)


33

ทรัพยากรที่ดีคือการทำงานกับ SSL ในเวลาพัฒนานั้นง่ายกว่าด้วย IIS Expressโดย Scott Hanselman

สิ่งที่คุณตามมาคือส่วนการให้ IIS Express ไปใช้งานภายนอกพอร์ต 80


โพสต์บล็อกนี้ขอแนะนำให้แยกพอร์ต 80 ถึง "IISExpressWeb.exe" IIS Express รุ่นปัจจุบันขาดชื่อนี้ - มีเพียง IISExpress.exe และ IISExpressTray.exe การแยกการเชื่อมต่อเพื่อป้องกันการเชื่อมต่อจากภายนอก การกำจัดข้อ จำกัด กระบวนการอนุญาตให้เชื่อมต่อระบบ. exe ที่เหมาะสมในการกำหนดเป้าหมายคืออะไร
Chris Moschini

33

หากคุณกำลังทำงานกับ Visual Studio ให้ทำตามขั้นตอนเหล่านี้เพื่อเข้าถึง IIS-Express ผ่านที่อยู่ IP:

  1. รับโฮสต์ที่อยู่ IP ของคุณ: ipconfigใน Windows Command Line
  2. ไปที่

    $(SolutionDir)\.vs\config\applicationHost.config
  3. หา

    <site name="WebApplication3" id="2">
       <application path="/" applicationPool="Clr4IntegratedAppPool">
          <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" />
       </application>
       <bindings>
         <binding protocol="http" bindingInformation="*:62549:localhost" />
       </bindings>
    </site>
  4. เพิ่ม: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    ด้วยที่อยู่ IP ของคุณ

  5. เรียกใช้ Visual Studio ของคุณด้วยสิทธิ์ผู้ดูแลระบบและทุกอย่างจะทำงานได้
  6. อาจค้นหาปัญหาไฟร์วอลล์บางอย่างหากคุณพยายามเชื่อมต่อจากระยะไกล

20

ฉันแก้ไขด้วยการติดตั้ง "Conveyor by Keyoti" ใน Visual Studio Professional 2015 เครื่องลำเลียงสร้างที่อยู่ REMOTE (IP ของคุณ) ด้วยพอร์ต (45455) ที่เปิดใช้งานคำขอภายนอก ตัวอย่าง:

ป้อนคำอธิบายรูปภาพที่นี่

Conveyor ช่วยให้คุณทดสอบเว็บแอปพลิเคชันจากแท็บเล็ตภายนอกและโทรศัพท์ในเครือข่ายของคุณหรือจาก Android emulators (โดยไม่ต้อง http://10.0.2.2:<hostport> )

ขั้นตอนอยู่ในลิงค์ต่อไปนี้:

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti


@ kilianeller โปรดติดตามลิงก์ในคำตอบและถามคำถามที่นั่นเราสามารถช่วยคุณได้
Jim W กล่าวว่าคืนสถานะโมนิก้า

Workst !! ฉันพิสูจน์วิธีแก้ปัญหาอื่น ๆ ทั้งหมด (เปลี่ยน applicationhost.config, netsh, IPv6 adress .. ) และไม่มีอะไร แต่การติดตั้งนี้ใช้งานได้ในที่สุดปัญหาเล็ก ๆ เพียงอย่างเดียวคือที่อยู่ IP ผิด แต่ไม่ใช่ปัญหาร้ายแรง
ไอออน

ติดตั้งง่ายจริงๆ เพียงให้แน่ใจว่าคุณเพิ่มใบรับรองในเบราว์เซอร์ระยะไกลของคุณตามคำแนะนำในหน้าของส่วนขยาย
Andres

ฉันไม่อยากจะเชื่อเลยว่ามันได้ผล !!! เรียบง่ายมากเลย !!! ฉันใช้เวลา 5 ชั่วโมงสุดท้ายเท่านั้นเพื่อค้นหาวิธีแก้ปัญหาที่ว่างเปล่าและในที่สุดฉันก็ทำสิ่งนี้!
Ziggy192

10

หากคุณลองคำตอบของพันเอก Panic แล้วแต่ไม่สามารถใช้งานได้ใน Visual Studio ให้ลองทำดังนี้:

ผนวกรายการอื่น<binding />ในการกำหนดค่า IIS Express ของคุณ

<bindings>
    <binding protocol="http" bindingInformation="*:8080:localhost" />
    <binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>

ในที่สุดคุณต้องเรียกใช้ Visual Studio ในฐานะผู้ดูแล


น่าเสียดายที่ดูเหมือนจะใช้งานไม่ได้สำหรับฉัน .. ฉันยังคงได้รับการเชื่อมต่อที่ถูกปฏิเสธเมื่อฉันพยายามเข้าถึง ip ในเครื่องของฉันที่พอร์ต 8080
Thomas Teilmann

@ThomasTeilmann ใน Visual Studio ฉันต้องเปิดคุณสมบัติของเว็บแอปพลิเคชันและภายใต้แท็บเว็บให้เปลี่ยน "Project Url" เพื่อใช้ชื่อโฮสต์สำรองแทน localhost
Sam

@ThomasTeilmann โอ้และฉันคิดว่าคุณต้องเรียกดูด้วยชื่อโฮสต์มากกว่า IP
แซม

ฉันลองทั้งสองอย่างเช่นกันจริง ๆ แล้วมันไม่ได้ผลกับอินสแตนซ์ของคลาวด์: / ขอบคุณแม้ว่า
Thomas Teilmann

นี่คือคำตอบสำหรับฉัน (เช่นเรียกใช้ VS เป็นผู้ดูแลระบบ) - ขอบคุณ @Bruce นอกจากนี้ฉันยังต้องแก้ไขการตั้งค่าไฟร์วอลล์ด้วยตนเอง ในกรณีของฉัน (เช่นการทดสอบว่า iphone ของฉันสามารถเรียกดูเครื่อง dev ของฉัน) เปิดพอร์ต 8080 บนไฟร์วอลล์ไม่ทำงาน (huh?) แต่เปิดการเข้าถึงโดย ip (เช่นขอบเขต> IP ท้องถิ่น = 10.0.0.0/24 = บ้านของฉัน เครือข่าย) ได้หลอกลวง
Ilan

8

สิ่งที่ช่วยฉันได้คือคลิกขวาที่ไอคอน 'IISExpress' 'แสดงแอปพลิเคชันทั้งหมด' จากนั้นเลือกเว็บไซต์และฉันเห็นว่ามันใช้ aplicationhost.config และการแก้ไขก็สมบูรณ์แบบ

การกำหนดค่า IISExpress


2
คำตอบนี้ชี้ให้ฉันเห็นโซลูชันอื่นแก้ไข applicationhost.config เพื่อยอมรับ: 55665:แทน *: 55665: localhost
Deko

ขอบคุณ @Deko - ความคิดเห็นของคุณประกอบกับคำสั่ง netsh ที่กล่าวถึงในการตอบกลับอื่น ๆ ทำให้มันทำงานได้
Marcel Popescu

8

นี่คือสิ่งที่ฉันทำสำหรับ Windows 10 ที่มี Visual Studio 2015 เพื่อเปิดใช้งานการเข้าถึงระยะไกลทั้งด้วย http และ https:

ขั้นตอนแรกคือผูกแอปพลิเคชันของคุณกับที่อยู่ IP ภายในของคุณ เรียกใช้cmd-> ipconfigเพื่อรับที่อยู่ เปิดไฟล์/{project folder}/.vs/config/applicationhost.configและเลื่อนลงจนกว่าคุณจะพบสิ่งนี้:

<site name="Project.Web" id="2">
    <application path="/">
        <virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:12345:localhost" />
    </bindings>
</site>

bindingsเพิ่มสองผูกใหม่ภายใต้ คุณสามารถใช้ HTTPS เช่นกันหากคุณต้องการ:

<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />

เพิ่มกฎต่อไปนี้ในไฟร์วอลล์ของคุณเปิดcmdพรอมต์ใหม่ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งต่อไปนี้:

netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow

netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow

ตอนนี้เริ่มต้น Visual Studio Administratorเป็น Propertiesคลิกขวาแฟ้มโครงการโครงการเว็บและเลือก ไปที่แท็บและคลิกWeb Create Virtual Directoryหาก Visual Studio ไม่ทำงานในฐานะผู้ดูแลระบบอาจจะล้มเหลว ตอนนี้ทุกอย่างควรทำงาน

ป้อนคำอธิบายรูปภาพที่นี่


ทำงานให้ฉัน! :) นอกจากนี้ยังมีโพสต์ที่ดีที่นี่: blog.kloud.com.au/2017/02/27/…
Leniel Maccaferri

ฉันลองทุกอย่างรวมถึง ngrok แล้วก็ไม่มีประโยชน์ สิ่งนี้ใช้ได้กับการลองครั้งแรก
kooldave98

5

คำตอบที่ได้รับการยอมรับสำหรับคำถามนี้เป็นแนวทางสำหรับการให้ IIS Express ทำงานร่วมกับ webmatrix ฉันพบว่าคู่มือนี้มีประโยชน์มากกว่าเมื่อพยายามทำให้ทำงานกับ VS 2010

ฉันเพิ่งทำตามขั้นตอนที่ 3 และ 4 (เรียกใช้ IIS Express ในฐานะผู้ดูแลระบบ) และต้องปิดใช้งานไฟร์วอลล์ชั่วคราวเพื่อให้ทำงานได้


คำแนะนำที่คุณเชื่อมโยงกับการสูญเสียความสามารถในการดีบักจาก Visual Studio ซึ่งอย่างน้อยในมุมมองของฉันทำให้ไม่มีจุดหมาย - การใช้ IIS หรือเซิร์ฟเวอร์ระยะไกลอื่น ๆ จะดีหรือดีกว่า (เพราะคุณสามารถตั้งค่าการดีบักระยะไกลบน IIS อย่างน้อย) หาก IIS Express ไม่ต้องการสิทธิ์ผู้ดูแลระบบในการรันโดยไม่ใช้โฮสต์ในพื้นที่สิ่งนี้จะใช้ได้ น่ารำคาญมาก
Chris Moschini

นี่คือสิ่งที่ฉันกำลังมองหา - ขอบคุณ! ฉันใช้ IIS Express กับ Visual Studio 2010 และกำลังจะทดสอบแอปพลิเคชัน ASP.NET MVC3 บน LAN ของฉันและนี่คือสิ่งที่ฉันต้องการสำหรับการทำงาน :)
Lasse Christiansen

5

คุณอาจลองตั้งค่าการส่งต่อพอร์ตแทนที่จะพยายามแก้ไขการกำหนดค่า IIS Express ของคุณเพิ่มกฎ HTTP.sys ใหม่หรือเรียกใช้ Visual Studio เป็นผู้ดูแลระบบ

โดยทั่วไปคุณต้องส่งต่อIP:PORTเว็บไซต์ของคุณทำงานที่พอร์ตฟรีอื่น ๆ ในเครื่องของคุณ แต่ในอะแดปเตอร์เครือข่ายภายนอกไม่ใช่ localhost

สิ่งที่เป็นที่ IIS Express (อย่างน้อยใน Windows 10) ผูกกับ[::1]:portความหมายมันฟังบนพอร์ต IPv6 คุณต้องคำนึงถึงสิ่งนี้ด้วย

นี่คือวิธีที่ฉันทำงานนี้ - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

หวังว่ามันจะช่วย


ฉันใช้ Windows 10 และเชื่อมโยง localhost กับ IPv6 เป็นกุญแจสำคัญ ขอบคุณ!
TomaszGuzialek

คอมพิวเตอร์ที่ฉันพยายามกำหนดค่ามีที่อยู่ในท้องที่อื่น มันชื่อว่า "local-dev" ฉันแค่ผูกv4tov6 Listenport = 3000 connectaddress = local-dev connectport = 60000 เพื่อให้มันใช้งานได้ โพสต์ที่ยอดเยี่ยมขอบคุณ!
Anika

4

วิธีที่ง่ายที่สุดและยอดเยี่ยมที่สุดที่ฉันพบคือใช้ (ใช้เวลา 2 นาทีในการตั้งค่า):

https://ngrok.com/

มันจะทำงานกับสิ่งที่ทำงานบน localhost เพียงลงทะเบียนใช้งานได้ง่ายและสิ่งใดก็ตามที่คุณทำงานบน localhost จะได้รับ URL สาธารณะที่คุณสามารถเข้าถึงได้จากทุกที่

สิ่งนี้เป็นสิ่งที่ดีสำหรับการแสดงสิ่งต่าง ๆ กับเพื่อนในทีมระยะไกลของคุณไม่เล่นซอกับการตั้งค่า IIS หรือไฟร์วอลล์ ต้องการหยุดการเข้าถึงเพียงแค่ยกเลิกการใช้งาน

ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ngrok http -host-header=localhost 89230

สมมติว่า 89230 เป็นพอร์ต IIS Express ของคุณ

คุณยังสามารถเรียกใช้หลายพอร์ตได้แม้ในแผนฟรี


1
ใครจะคิดว่าฉันจะต้องอ่านคำตอบมากมายเช่นนี้จนกว่าฉันจะได้คำตอบ ...
alexkovelsky

3

ฉันมีปัญหาในการใช้ IIS Express ใน Win 8.1 และคำขอภายนอก

ฉันทำตามขั้นตอนนี้เพื่อดีบักคำขอภายนอก:

  1. ติดตั้ง IIS
  2. กำหนดค่า Visual Studio เพื่อใช้ IIS ท้องถิ่น (คุณสมบัติหน้าในโครงการเว็บของคุณ)
  3. สร้าง AppPool พิเศษใน IIS เพื่อทำงานกับแอปพลิเคชันของฉัน
  4. ในโครงการของฉันฉันกำลังใช้ Oracle Client และต้องเป็น 32 บิต (64 บิตไม่ทำงานกับ Visual Studio) จากนั้นฉันต้องอนุญาต 32 บิตใน Application Pool
  5. กำหนดค่าไฟร์วอลล์ Windows เพื่ออนุญาตการร้องขอในพอร์ต 80 (กฎขาเข้า)

มันใช้งานได้!


2

หากคุณเรียกใช้ Visual Studio จากผู้ดูแลระบบคุณสามารถเพิ่มได้

<binding protocol="http" bindingInformation="*:8080:*" />

หรือ

<binding protocol="https" bindingInformation="*:8443:*" />

เข้าไป

%userprofile%\My Documents\IISExpress\config\applicationhost.config

1
ฉันใช้การกำหนดค่านี้กับ$(SolutionDir).vs\config\applicationHost.configและฉันต้องเปิดพอร์ต (8443) ของแอปพลิเคชันในไฟร์วอลล์ Windows
Tonatio

2

ฉันเปิดใช้งาน IIS ในตัวเครื่องดังนั้นฉันเพิ่งสร้างกฎการเขียนใหม่ไปยังพอร์ตการดีบักของฉัน ... ฉันคิดว่ามันจะดีกว่าและเย็นกว่าวิธีอื่นเพราะมันง่ายกว่าที่จะลบเมื่อทำการพัฒนา ... นี่คือลักษณะการเขียนใหม่ .

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="^dev/(.*)" />
            <action type="Rewrite" url="http://localhost:47039/{R:1}" />
        </rule>
    </rules>
</rewrite>

VS ยังอนุญาตให้คุณพัฒนาโดยใช้ IIS ในเครื่องของคุณโดยตรง (ซึ่งอนุญาตการเชื่อมต่อระยะไกล) แต่ในทางกลับกันคุณจะต้องเรียกใช้ในฐานะผู้ดูแลระบบเสมอ ... ฉันไม่ชอบมัน


นี่เป็นโซลูชันที่ฉันโปรดปรานเช่นกันขอบคุณ :) ฉันเพิ่งต้องเปิดใช้งาน Reverse Proxy สำหรับ IIS ของฉันก่อนจากนั้นเพิ่มกฎนี้ใน web.config ของฉัน
Mahdi Ghiasi

1

ฉันแก้ไขปัญหานี้โดยใช้วิธี reverse proxy

ฉันติดตั้งเซิร์ฟเวอร์ wamp และใช้คุณสมบัติ reverse proxy แบบง่าย ๆ ของ apache เว็บเซิร์ฟเวอร์

ฉันเพิ่มพอร์ตใหม่เพื่อฟังเว็บเซิร์ฟเวอร์ Apache (8081) จากนั้นฉันเพิ่มการกำหนดค่าพร็อกซีเป็น virtualhost สำหรับพอร์ตนั้น

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>

1

ฉันทำตามขั้นตอนทั้งหมดแล้วและไม่มีอะไรช่วยเลย และสิ่งที่ฉันต้องการก็แค่เรียกใช้แอพของฉันผ่าน IIS Express ...

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่ามันจะช่วย


0

ฉันไม่สามารถตอบสนองการร้องขอ iis ให้กับผู้ใช้คนอื่น ๆ ในเครือข่ายท้องถิ่นของฉันสิ่งที่ฉันต้องทำ (นอกเหนือจากข้างต้น) คือการรีสตาร์ทเราเตอร์ BT Hub ของฉัน


0

มันยอดเยี่ยมมากและครอบคลุม HTTPS ด้วยชื่อโดเมนที่น่ารัก:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

ส่วนที่น่ากลัวจริง ๆ ฉันไม่พบที่อื่นใน SO ในกรณีที่ลิงก์ด้านบนหายไป:

> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
>       setupFriendlyHostnameUrl -url:<url>
>       deleteFriendlyHostnameUrl -url:<url>
>       setupUrl -url:<url>
>       deleteUrl -url:<url>
>       setupSslUrl -url:<url> -CertHash:<value>
>       setupSslUrl -url:<url> -UseSelfSigned
>       deleteSslUrl -url:<url>
> 
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly  hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/

ยูทิลิตี้ด้านบนจะลงทะเบียนใบรับรอง SSL สำหรับคุณ! หากคุณใช้ตัวเลือก -UseSelfSigned มันง่ายมาก

หากคุณต้องการทำสิ่งที่ยากส่วนที่ไม่ชัดเจนคือคุณต้องบอก HTTP.SYS ว่าจะใช้ใบรับรองใดเช่นนี้

netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE

Certhash คือ "Thumbprint" ที่คุณสามารถรับได้จากคุณสมบัติใบรับรองใน MMC


0

ฉันทำสิ่งต่อไปนี้และสามารถเชื่อมต่อได้:

1) การเปลี่ยนแปลงการกำหนดค่า IIS Express ผูกพันจากโฮสต์ท้องถิ่นเป็น '*'

binding protocol = "http" bindingInformation = "*: 8888: *"

2) กำหนดกฎขาเข้าบนไฟร์วอลล์เพื่ออนุญาตพอร์ตเฉพาะสำหรับประเภทโปรโตคอล: tcp

3) เพิ่มคำสั่งต่อไปนี้เพื่อเพิ่มการกำหนดค่าเครือข่ายสำหรับพอร์ตของคุณ: netsh http เพิ่ม urlacl url = http: // *: 8888 / ผู้ใช้ = ทุกคน


เมื่อคุณมาถึงคำถามนี้ 6 ปีหลังจากที่ถูกถามและมีคำตอบอื่นอีก 12 คำตอบมันจะดีที่สุดถ้าคุณแก้ไขคำตอบของคุณเพื่ออธิบายว่าคำตอบของคุณทำงานได้ดีกว่าคำตอบอื่น ๆ 12 (หรืออย่างน้อย แตกต่างกัน)
นอกรีต Monkey

0

อีกวิธีหนึ่งในการเข้าถึงคำขอภายนอกคือใช้ IIS แทน IIS Express ในสตูดิโอเสมือนจริงฉันสามารถสลับได้อย่างง่ายดาย

ป้อนคำอธิบายรูปภาพที่นี่


ฉันใช้ VS2019
PJ3

-1

[กล่องโต้ตอบคุณสมบัติโครงการ]

สำหรับการพัฒนาโดยใช้ VisualStudio 2017 และโครงการ NetCore API:

1) ใน Cmd-Box: ipconfig / all เพื่อกำหนดที่อยู่ IP

2a) ป้อนที่อยู่ IP ที่ดึงมาได้ในโครงการคุณสมบัติ -> แท็บดีบั๊ก

2b) เลือกพอร์ตและเชื่อมต่อกับที่อยู่ IP จากขั้นตอนที่ 2a

3) เพิ่มกฎการอนุญาตในไฟร์วอลล์เพื่ออนุญาตการรับส่งข้อมูล TCP บนพอร์ตที่เลือก (ไฟร์วอลล์ของฉันถูกทริกเกอร์ด้วยกล่องโต้ตอบ: "บล็อกหรือเพิ่มกฎในไฟร์วอลล์") เพิ่มความตั้งใจในกรณีนั้นทำการหลอกลวง

ข้อเสียของการแก้ปัญหาข้างต้น:

1) หากคุณใช้ที่อยู่ IP แบบไดนามิกคุณต้องทำซ้ำขั้นตอนข้างต้นในกรณีที่มีการกำหนดที่อยู่ IP อื่น

2) เซิร์ฟเวอร์ของคุณมีพอร์ตเปิดซึ่งคุณอาจลืม แต่พอร์ตที่เปิดนี้ยังคงเป็นคำเชิญสำหรับแขกที่ไม่ต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.