ไม่สามารถเริ่มไซต์ใน IIS (ใช้โดยกระบวนการอื่น)


96

เมื่อฉันพยายามเริ่มไซต์ใน IIS มันบอกว่า:

กระบวนการไม่สามารถเข้าถึงไฟล์ได้เนื่องจากถูกใช้โดยกระบวนการอื่น

ฉันค้นหาใน Google และพบว่าไซต์อื่นอาจใช้พอร์ต 80 แต่ใน MyIIS ฉันเห็นว่ามีเพียงไซต์นี้เท่านั้นที่ใช้พอร์ต 80 มีอะไรอีกบ้างที่สามารถใช้พอร์ต 80 หรือมีปัญหาอื่นที่เกี่ยวข้อง


รีสตาร์ทระบบของคุณอีกครั้งจากนั้นลอง
عثمانغني

ฉันทำ bu อีกครั้งเกิดปัญหาเดียวกัน

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

ข้อความแสดงข้อผิดพลาดนี้ไม่เป็นประโยชน์อย่างแน่นอน แต่หากคุณตรวจสอบบันทึกเหตุการณ์ของโปรแกรมดูเหตุการณ์จะช่วยให้คุณทราบว่ามีข้อผิดพลาดขณะเชื่อมโยงกับพอร์ต 8080 (ใช้โดยเว็บไซต์ใน IIS ของฉัน) ในกล่อง windows 10 ของฉันมันบันทึกข้อผิดพลาดสองรายการจากIIS-W3SVC และHttpEventต้นทาง ข้อความที่บันทึกเหตุการณ์ที่สอง Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.- พอร์ต 8080 ถูกใช้งานโดยบริการ Oracle ฉันเปลี่ยนพอร์ตที่เว็บไซต์ใช้เป็น 8081
RBT

คำตอบ:


176

ตรวจสอบโดยใช้netstat -aonหรือnetstat -aon | findstr 0.0:80ในพรอมต์คำสั่งเพื่อดูว่ารหัสกระบวนการใดที่กำลังฟังพอร์ต: 80จากนั้นดูรหัสกระบวนการ (PID) นั้นในตัวจัดการงานด้วยview-> เลือกคอลัมน์ -> รหัสกระบวนการที่ตรวจสอบ สิ้นสุดกระบวนการนั้นเริ่มต้น IIS ใหม่และเสร็จสิ้น ( หมายเหตุ: หากคุณติดตั้งSkypeให้ลองออกจากกระบวนการนั้นก่อน )

ในตัวจัดการงานสมัยใหม่คุณต้องไปที่แท็บรายละเอียดเพื่อค้นหา PID หรือตามที่@Nikita Gกล่าวไว้ในความคิดเห็นคุณสามารถใช้คำสั่งนี้เพื่อค้นหางานจากพรอมต์คำสั่งของคุณ:

tasklist /FI "PID eq 123"

หมายเหตุ: เปลี่ยน123ด้วย PID ที่ส่งคืนจากคำสั่งแรก


11
ขอบคุณสำหรับความคิดเห็นของ Skype
Keith

Skype ทำงานบนพอร์ต 80 และเว็บไซต์ของฉันได้รับการกำหนดค่าบนพอร์ต 80 ด้วยดังนั้นฉันจึงแก้ไขปัญหานี้โดยออกจากระบบ skype จากนั้นฉันเปลี่ยนการตั้งค่าของ skype เพื่อให้ทำงานบนพอร์ต 8080 (ไม่บังคับให้เริ่ม IIS)
Umar Shafeeq

1
เป็นเรื่องสนุกเมื่อผลิตภัณฑ์ของ Microsoft ต่อสู้ ... จนกว่าคุณจะต้องรีสตาร์ทคอมพิวเตอร์เมื่อคุณรู้ว่ามันเกิดขึ้นอีกครั้งด้วยเหตุผลที่ไม่ทราบสาเหตุและไม่มีพลังงานพอที่จะหาสาเหตุได้ (จนถึงตอนนี้) อย่างจริงจังน่ารำคาญมาก
andyface

10
นี่เป็นวิธีที่ง่ายกว่าเล็กน้อยในการทำ แสดงเฉพาะรายการที่ฟังบนพอร์ต netstat -aon | findstr 0.0:8080: และจากนั้นสมมติว่าผลตอบแทน PID 123, tasklist /FI "PID eq 123"ทำงานต่อไปเพื่อดูว่ากระบวนการที่เป็น:
Nikita G.

1
สำหรับฉันมันเป็นOracleServiceXEบริการที่กินพอร์ต 8080 ซึ่งเว็บไซต์ใหม่ในเซิร์ฟเวอร์ IIIS ของฉันพยายามผูกมัด
RBT

35

เกิดขึ้นเนื่องจากกระบวนการอื่นใช้พอร์ต 80 อาจเป็นแอปพลิเคชันแชทบนพีซีของคุณเช่น Skype

ขั้นแรกเปลี่ยนพอร์ตเว็บไซต์เริ่มต้นซึ่งเป็น 80 เป็นพอร์ตที่ไม่ได้ใช้งาน (เช่น 8087) ในการดำเนินการนี้ให้คลิกขวาที่แอปพลิเคชันจากนั้นคลิกที่ 'แก้ไขการผูก'

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

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

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


6
skype เป็นปัญหาของฉัน
nbushnell

เหมือนกันที่นี่ skype ใช้พอร์ต 80 ปิดการใช้งานภายใต้ตัวเลือก -> ขั้นสูง -> การเชื่อมต่อ -> "ใช้พอร์ต 80 และ 442 สำหรับเพิ่มเติม ... "
Wagner Danda da Silva Filho

25

ออกจากระบบ Skype แล้วลองอีกครั้ง ฉันประสบปัญหาเดียวกันและเพิ่งออกจากระบบ Skype จากนั้นรีเซ็ต IIS ของฉัน มันได้ผลสำหรับฉัน


2
คุณสามารถเปลี่ยนพอร์ตที่ Skype ใช้จากการตั้งค่า
3ventic

10

คุณยังสามารถรันคำสั่งนี้เพื่อค้นหาว่าแอปพลิเคชันหรือบริการใดกำลังใช้พอร์ตจากนั้นติดตามลงในตัวจัดการงาน (หากไม่ใช่ Web Deploy Agent Service)

netstat -o -n -a | findstr 0.0: 80

จากนั้นเปิดตัวจัดการงานไปที่กระบวนการคลิกช่องทำเครื่องหมาย "แสดงกระบวนการสำหรับผู้ใช้ทั้งหมด" จากนั้นคลิกเมนูมุมมองและไปที่คอลัมน์จากนั้นเพิ่มคอลัมน์ PID

จับคู่รหัสกระบวนการจากคำสั่ง netstat กับ PID ในตัวจัดการงานและคุณจะพบบริการหรือแอปพลิเคชันที่ใช้พอร์ต


2
tasklist /FI "PID eq <PID from netstat (without brackets)>"ในกรณีที่คุณต้องการหลีกเลี่ยงการจัดการงานเปิดเรียกใช้คำสั่งต่อไปนี้หลังจากที่เหมาะสมเพื่อดูว่ากระบวนการที่เป็น:
Nikita G.

2

อย่างที่คนอื่น ๆ บอกไว้อย่างอื่นอาจใช้พอร์ต 80 หรือ 443 มันเป็น VMWare Workstation Server สำหรับฉัน แต่ตรวจสอบคำตอบอื่น ๆ สำหรับวิธีใช้ netstat


+1 สำหรับการกล่าวถึงพอร์ต 443 ฉันใช้netstatเพื่อตรวจสอบพอร์ต 80 และไม่มีอะไรปรากฏ จากนั้นคุณพูดถึงพอร์ต 443 และนั่นคือ
jtate

1

ฉันคิดว่าลิงก์นี้ให้คำอธิบายและแก้ไขปัญหานี้ได้ดีทีเดียว http://support.microsoft.com/KB/890015

เวลาส่วนใหญ่; มันเกิดจากหนึ่งในสองสาเหตุ: 1) พอร์ต 80 ถูกใช้โดยสิ่งอื่นและตามที่ผู้อื่นแนะนำคุณสามารถใช้ netstat -o -n -a | findstr 0.0: 80 เพื่อดูว่าเป็นกรณีนี้หรือไม่ ถ้าใช่ให้ฆ่ากระบวนการจากตัวจัดการงาน (ทำเครื่องหมายแสดงกระบวนการจากผู้ใช้ทั้งหมด)

2) หากไม่ได้ใช้พอร์ต 80 สาเหตุที่สองอาจเป็นที่อยู่ IP ที่ไม่ถูกต้องใน ListenOnlyList ที่ยื่นในคีย์รีจิสทรีของ HTTP-> พารามิเตอร์ หากคุณทำตามลิงก์เพื่อตั้งค่าคีย์ด้วยตนเองหรือในความเป็นจริงคุณสามารถใช้ (xp และเซิร์ฟเวอร์ 2003) httpcfg delete iplisten -i ipaddressเพื่อลบที่อยู่ IP ที่ไม่ถูกต้อง คุณต้องรีสตาร์ท http เมื่อคุณแก้ไขที่อยู่ ip!


@bummi ขอบคุณสำหรับความคิดเห็น ฉันได้เพิ่มรายละเอียดอีกเล็กน้อยในตอนนี้
stt106

0

ในกรณีของฉันมันเป็น " Sync Share Service " (SyncShareSvc) ที่กำลังทำงานและใช้พอร์ต 80 netstat แสดง 80 ว่าฟรีแม้ว่า ฉันสามารถทำให้ไซต์ทำงานบนพอร์ตอื่นได้ แต่ไม่ใช่ 80 ถ้าฉันเพิ่มชื่อโฮสต์ IIS จะอนุญาตให้ฉันเริ่มไซต์ แต่ฉันจะได้รับแจ้งให้ตรวจสอบความถูกต้องของ Digest เมื่อเรียกดู localhost (หรือชื่อโฮสต์ใด ๆ เพิ่ม) เฉพาะ Anonymous และ Forms Auth เท่านั้นที่เปิดใช้งานใน IIS ...

ฉันยังพบว่าหลังจากหยุด IIS แล้วhttp://localhostฉันยังคงแจ้งให้ฉันตรวจสอบการไดเจส

วิธีแก้ปัญหา - ในกรณีของฉัน - คือการลบFile and Storage Services> Files and iSCSI Services> " Work Folders "ออกจากบริการที่ติดตั้ง (จำเป็นต้องรีสตาร์ท)

หลังจากลบบริการ "โฟลเดอร์งาน" และรีสตาร์ท IIS ก็ทำงานตามที่คาดไว้


0

กรณีของฉันคือหลังจากติดตั้ง RD Web Access เว็บไซต์เริ่มต้นเดิมไม่สามารถเริ่มต้นได้ ลบบทบาท RD Web Access ยังคงเหมือนเดิม การเชื่อมพอร์ต 443 ที่ลบออกช่วยแก้ปัญหาได้


0

เวลาส่วนใหญ่ที่เกิดขึ้นโดยนักพัฒนาเว็บเป็นสาเหตุของ apache ดังนั้นหากคุณไปที่ไฟล์ config จาก apache! เปิดขึ้นและค้นหาด้วย ctrl + f ถึง 80 และเปลี่ยน ip ที่คุณจะเห็นเป็น 8080 และประโยคด้านล่างมี 80 ถึง 8080 และคุณต้องกำหนดสิ่งนั้นใน xampp ของคุณหรือโปรแกรมที่คุณใช้อยู่ในปัจจุบัน

หวังว่าฉันจะช่วยพวกคุณออกไป


คำถามเกี่ยวกับ IIS ไม่ใช่ apache
C. Helling

1
ใช่ แต่ 2 โปรแกรมนี้รบกวนกันและกันดังนั้นฉันอาจจะช่วยคนที่มีปัญหาเดียวกันกับฉัน
Arne Schouten

0

เพื่อให้ได้ข้อมูลที่มีความหมายมากขึ้นวิธีหนึ่งคือรับข้อมูลการเป็นเจ้าของเมื่อออกnetstatเพื่อให้คุณทราบกระบวนการที่ใช้ 80 (การรวม http เริ่มต้น) หรือ 443 (หากกำหนดการเชื่อมโยง https):

 netstat -ab

ในกรณีของฉันผู้ร้ายคือ vmware:

TCP 0.0.0.0:443 ComputerName: 0 LISTENING
[vmware-hostd.exe]

netstat สามารถถูกส่งไปยัง find เพื่อค้นหาพอร์ต 80 หรือ 443 (เช่นfind ":443") แต่การเชื่อมต่อที่ใช้งานอยู่เหล่านี้จะแสดงที่จุดเริ่มต้นของรายการซึ่งง่ายต่อการมองเห็น

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