“Không thể khởi chạy máy chủ Web IIS Express.” trong Visual Studio


103

Tôi đã cố gắng chạy dịch vụ web của mình thông qua studio trực quan. Tôi đã gặp phải một vấn đề như:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

Tôi đã xem trình quản lý tác vụ và thấy rằng PID 4 được Hệ thống sử dụng và Mô tả của nó là NT Kernel & System. Vì vậy, tôi đã cố gắng ngăn chặn http service. Tất cả các dịch vụ phụ thuộc đã dừng. Nhưng tôi đang gặp phải một vấn đề trong việc dừng dịch vụ http như

The service is starting or stopping.  Please try again later.

Vì vậy, tôi đã cố gắng dừng và bắt đầu dịch vụ theo cách thủ công. Nhưng quá trình Kết thúc bị vô hiệu hóa. Sẽ rất hữu ích nếu ai đó có thể giúp về vấn đề này


1
gặp sự cố sau khi cập nhật Windows 10: developercommunity.visualstudio.com/content/problem/580466/…
Xiao

Câu trả lời:


127

Từ https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

Mã lỗi 0x80070020có nghĩa là ERROR_SHARING_VIOLATION, trong trường hợp của IIS Express (hoặc IIS) có nghĩa là cổng mà nó đang cố gắng lắng nghe đang được sử dụng bởi một quy trình khác.

Sử dụng netstatlệnh để tìm ra ứng dụng đang sử dụng cổng.

netstat -ao | findstr <port_number_to_search_for>

Các atham số cho netstat hiển thị tất cả các kết nối và các cổng nghe.

Các otham số cho netstat hiển thị quá trình ID liên quan đến việc kết nối.

Chạy lệnh netstat trên sẽ tạo ra kết quả như:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

Số cuối cùng được hiển thị (9544 ở đây) là ID quy trình.


11
Câu trả lời chính xác! Bạn không chỉ mô tả giải pháp, bạn còn bao gồm ý nghĩa của các tham số. Tôi ước tất cả các câu trả lời là như thế này!
Christian Payne

8
Điều này đã giúp tôi và hóa ra PID vi phạm là Chrome.exe. Tôi đã khởi động lại Chrome và sự cố đã biến mất.
chiêm tinh

1
Câu trả lời chính xác. Sử dụng I này tìm thấy skype đã được lắng nghe trên cả hai cổng cổng 80 và 443. Tôi giết skype và sau đó có thể ra mắt iisexpress như bình thường, bây giờ thể hiện cam kết ràng buộc thêm của tôi cho cổng 80 và 443
Alastair

3
chạy trong cửa sổ cmd nâng cao TASKKILL /PID 2756 /Fthay thế 2756bằng ID quy trình của bạn
stackoverfloweth

11
Điều này cũng có thể được thực hiện nhanh hơn đáng kể với công -ntắc - nó sử dụng đầu ra "số", có nghĩa là không tốn thời gian truy vấn DNS để phân giải địa chỉ IP thành tên máy chủ.
Tullo_x86 27/02/18

45

Tôi đã gặp sự cố tương tự khi cố gắng chạy một dự án từ Visual Studio 2019 trên Windows 10. Ứng dụng không thể khởi động vì cổng dường như đang được sử dụng bởi một quy trình khác. Tuy nhiên, netstatlệnh cho thấy rằng cổng không được sử dụng bởi bất kỳ ứng dụng nào.

Sau 2 ngày sử dụng Google, tôi đã tìm thấy giải pháp phù hợp với mình. Cổng tôi đang cố gắng sử dụng nằm trong phạm vi cổng bị loại trừ mà bạn có thể thấy bằng cách chạy lệnh:

netsh interface ipv4 show excludedportrange protocol=tcp

Thủ phạm dành riêng các cổng này trong trường hợp của tôi là Docker cho Windows và Hyper-V

Giải pháp

Tôi đã gỡ cài đặt Docker (vì tôi không cần nó) và tắt Hyper-V. Để tắt Hyper-V: Đi tới: Control Panel-> Programs and Features-> Bật hoặc tắt các tính năng của Windows. Bỏ chọn Hyper-V và khởi động lại máy tính.

Sau khi khởi động lại, lệnh netsh interface ipv4 show excludedportrange protocol=tcphiển thị không có cổng nào dành riêng

Sau đó, tôi đã thêm cổng cho ứng dụng của mình vào phạm vi cổng bị loại trừ bằng cách chạy lệnh sau từ dòng lệnh nâng cao:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

Sau đó, tôi bật lại Hyper-V (có thể cài đặt lại Docker nếu cần) và khởi động lại máy tính.

Hyper-V hiện đã dành riêng các cổng của nó mà không can thiệp vào cổng mà ứng dụng của tôi sử dụng: Dãy cổng dành riêng


Điều này phù hợp với tôi, ngoại trừ tôi cần Docker vì vậy tôi chỉ cần tắt nó khi khởi động thay vì gỡ cài đặt nó.
cderrick

2
Cuối cùng tôi đã thay đổi cổng ra khỏi phạm vi bị loại trừ .. nhưng ĐIỀU NÀY đã tiết kiệm cho tôi rất nhiều thời gian. Cảm ơn bạn.
Cory

2
Giống như @Cory, tôi đã thay đổi cổng của mình trong so với một cái gì đó nằm ngoài phạm vi, khó chịu vì bây giờ tôi phải thay đổi ứng dụng tham chiếu mỗi khi tôi làm điều này nhưng tốt hơn là khởi động lại hoàn toàn.
Nick Rubino

Tôi đã tìm kiếm điều này trong nhiều năm . Tôi tự hỏi liệu có cách nào để xác định chính xác ứng dụng nào đã đánh cắp các cổng của tôi không? Cảm ơn.
Simon Mourier

Việc vô hiệu hóa Hyper-V và khởi động lại đã khắc phục sự cố cho tôi
Kyle Burkett

30

Tôi đã từng gặp vấn đề tương tự. Tôi vừa khởi động lại Visual Studio và nó đã hoạt động.


1
Máy tính của tôi đã khởi động lại từ các bản cập nhật và netstat không hiển thị quá trình sử dụng cổng. Đây là giải pháp duy nhất hoạt động. Cảm ơn!
goodies4uall

1
phải khởi động lại máy tính của tôi cũng
Mahmoud Hboubati

Khởi động lại Visual Studio (2017) một cách đáng ngạc nhiên cũng hoạt động tốt với tôi. Cảm ơn!
Thomas Gassmann

Trong trường hợp của tôi, hộp Windows 10 của tôi bị màn hình xanh và tôi phải khởi động lại hai lần . Các dự án trang web khác hoạt động tốt (cổng cục bộ khác) và không có câu trả lời nào khác ở đây hoạt động. Thay đổi cổng cho dự án cũng không khắc phục được. Phải có một số cấu hình khác trong chính IIS Express.
Granger

Có vẻ như điều này xảy ra với tôi bất cứ khi nào tôi chạy một dự án trong VS 2019 với gỡ lỗi bằng F5, sau đó cố gắng chạy nó mà không gỡ lỗi bằng Ctrl + F5 khi nó không thành công. Khởi động lại sẽ khắc phục sự cố, mặc dù tôi ước tôi thực sự có thể ngăn nó xảy ra ngay từ đầu.
pwhe23

27

Tôi gặp vấn đề tương tự. Như @Kautsky Lozano đã đề cập ở trên Một ứng dụng khác đang sử dụng cổng đó.

Vì vậy [đối với hệ điều hành Windows] chỉ cần:

  • Mở giám sát tài nguyên (Trình quản lý tác vụ -> Hiệu suất -> Giám sát tài nguyên mở)
  • Bấm vào tab Mạng .
  • Và tại TCP Connections, hãy tìm ứng dụng sử dụng Cổng cục bộ mà IIS Express sử dụng và đóng nó lại. (nó là firefox trên trường hợp của tôi)

Hoạt động hoàn hảo!
Al Belmondo

12

Tôi đã gặp phải vấn đề tương tự sau khi chúng tôi nâng cấp giải pháp từ Visual Studio 2012 lên 2015. Tôi đến đây và chạy netstatchỉ để thấy rằng không có ứng dụng nào khác đang sử dụng cùng các cổng. Hóa ra tôi đã có cùng các trang web với các cổng giống nhau được ánh xạ trong applicationhost.configtại Users/<username>/Documents/IISExpress/configapplicationhost.configtrong .vsthư mục bên trong giải pháp của tôi. Tôi nên lưu ý rằng sự cố cũng không bắt đầu ngay sau khi nâng cấp. Nó chỉ bắt đầu thất bại liên tục vào một buổi sáng. Một vài lần khởi động lại dường như cũng không giải quyết được vấn đề.

Xóa các trang bị xung đột khỏi trang được lưu trữ trong Tài liệu của tôi và khởi động lại Visual Studio đã giải quyết được sự cố.


Điều này đã giúp tôi: applicationhost.configcó trong .vs\configthư mục trong thư mục giải pháp của bạn.
Erik Oppedijk

6

Nếu netstat không hiển thị bất kỳ thứ gì đã sử dụng cổng

netstat -ano | findstr <your port number>

Cổng có thể bị loại trừ, hãy thử lệnh này để xem phạm vi có bị chặn bởi thứ gì khác không:

netsh interface ipv4 show excludedportrange protocol=tcp

Bạn có thể thử bỏ chặn phạm vi từ cổng bắt đầu cho một số cổng (cần Dấu nhắc lệnh với Quản trị viên):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Đối với tôi, tôi không thể bỏ chặn chúng, tôi chỉ nhận được "Quyền truy cập bị từ chối", vì vậy tôi đã phải chọn một cổng khác cho trang web của mình.



3

Tôi chỉ gặp sự cố này mặc dù netstat không hiển thị bất kỳ xung đột nào.

Điều sau đã sửa nó cho tôi:

  1. Đóng Visual Studio
  2. Mở File Explorer
  3. Điều hướng đến thư mục của dự án vi phạm
  4. Xóa các thư mục objbin
  5. Xóa tệp * .user (đây có thể là tùy chọn)
  6. Khởi động lại Visual Studio và thử lại

2

Tôi gặp sự cố này khi nâng cấp dự án MVC . Tôi đã sao chép tệp .csproj-MVC mới hơn trên tệp .csproj hiện có của mình, sau đó hoạt động trở lại Dự án hoạt động hoàn toàn. Những gì tôi không thể xem xét là số cổng hiện có trong .csproj cũ. Dự án mới có số cổng mới, nhưng được chia sẻ Tên dự án / Assembly. Điều đó đủ khiến IIS Express mất trí và ném ra ngoại lệ này.

Chỉ cần đào số cổng cũ ra khỏi git và thay đổi URL IIS Express để đưa nó vào Cài đặt dự án là đủ để khắc phục.


2

Bước đầu tiên dễ dàng nhất mà không cần vào bảng điều khiển lệnh là chỉ cần tắt tất cả các ứng dụng (bao gồm cả VS), sau đó khởi chạy VS và thử lại. Có thể có một ứng dụng khác giống như trình duyệt của bạn gây ra xung đột. Trong trường hợp của tôi, Chrome đã gây ra sự cố và đã được giải quyết khi tắt mọi thứ và khởi động lại VS. Tôi đã mở lại Chrome và mọi thứ đều ổn.

Những thứ netstat ở trên rất hữu ích, nhưng đối với tôi đó chỉ là nếu bạn không thể làm những gì tôi đề nghị.


2

để tóm tắt tất cả các câu trả lời. Có 2 giải pháp. Cả hai đều làm việc cho tôi. - Giải pháp # 1 Hủy ứng dụng sử dụng cùng một cổng. - Giải pháp # 2 Định cấu hình IIS Express để sử dụng một cổng khác cho dự án của bạn.

Giải pháp # 1 (giả sử cổng trong thông báo lỗi là 443) Chạy trong dòng lệnh:

netstat -ao | findstr 443

nó trả về: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 Số cuối cùng (nhờ @ chris-schiffhauer) là PID để giết. Đi tới Trình quản lý tác vụ -> Quy trình -> [Hiển thị quy trình từ tất cả người dùng], Hủy quy trình với PID = 2904. Trong trường hợp của tôi, đó là máy chủ VmWare.

Giải pháp # 2 (Giả sử thông báo là: Không đăng ký được URL " http: // localhost: 433 / " cho trang web "MyProject.Website0" ... ). Mở tệp folloing trong Notespad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configTìm trong đó một dòng chứa:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

Thay đổi 433thành một cái gì đó khác, thích 4330hoặc xóa <binding.../>thẻ xung đột .


2

Trong trường hợp của tôi, làm theo cách sau đã thực hiện được mẹo:

  • Xóa trang web khỏi .vs \\ config \ applicationhost.config
  • Xóa trang khỏi Documents \ IISExpress \ config \ applicationhost.config
  • Xóa IISUrl khỏi .csproj

Khi tôi khởi động lại Visual Studio, nó đã gán cho dự án một số cổng hoàn toàn mới và chạy hoàn hảo


2

Số cổng không khớp

Trong trường hợp của tôi, sự cố nằm ở Thẻ ràng buộc của tôi được tìm thấy trong tệp cấu hình trong .vs trong thư mục giải pháp của tôi, số cổng không khớp. Các ràng buộc như sau

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

Và trong cài đặt của tôi, tôi đã đặt url là http://localhost:1943/

Vì vậy, những gì tôi đã làm là xóa liên kết bên trong và chạy ứng dụng web của mình, sau đó nó tạo liên kết mới với một số khác, sau đó tôi sao chép cổng được tạo mới vào cài đặt của mình, sau đó lỗi biến mất.


Khoảng thời gian này (tôi đã gặp vấn đề này trước đây, nó là một trong nhiều nguyên nhân được trình bày trong các câu trả lời khác nhau ở đây) đây là nguyên nhân.
gburton

2

Sau khi cập nhật Windows 10 và / hoặc Visual Studio 16+, nó có thể xảy ra do lỗi nội bộ khiến IISExpress không đăng ký được bất kỳ trang web phát triển nào vì nó không còn chấp nhận localhostkết nối.

Để khắc phục sự cố, bạn chỉ cần đăng ký lại ràng buộc. Để làm như vậy, hãy chạy lệnh sau từ trình bao quản trị:

netsh http add iplisten ipaddress=:: 

Điều đó đã làm việc cho tôi, cảm ơn rất nhiều!
Jakub Szumiato


1

Tôi đã có thể sửa chữa vấn đề này bằng cách loại bỏ tất cả mọi thứ từ <site>để </site>thẻ trong

Users/<username>/Documents/IISExpress/config/applicatiohost.config tập tin

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>

1

Chỉ lãng phí nửa ngày để cố gắng khắc phục vấn đề tương tự này, tôi cảm thấy mình nên thêm giải pháp mà cuối cùng đã hiệu quả với tôi.

TL; DR Nếu netstatcho biết rằng có vấn đề không được sử dụng, hãy thử một vài người khác trong phạm vi hoàn toàn khác

Tôi đã gặp sự cố này trước đây nhưng thường thấy việc khởi động lại studio trực quan, thay đổi các cổng (tăng thêm 1) hoặc khởi động lại thực hiện thủ thuật. Tuy nhiên, trong trường hợp này, điều này không giúp ích được gì, và netstatkhông tìm thấy một quy trình mâu thuẫn nào. Tôi thậm chí đã cài đặt lại IIS và studio trực quan và xóa một số chương trình khác mà tôi nghi ngờ có thể gây nhiễu. Có vẻ như IIS đang cố gắng khởi chạy nhiều phiên bản của cùng một trang web.

Cuối cùng tôi đã thử chạy netstatmà không có findstr. Tôi đã quét trực quan danh sách các cổng đang hoạt động và nhận thấy rằng mặc dù những cổng tôi đã thử không được liệt kê, có một vài quy trình sử dụng các cổng trong cùng một phạm vi. Vì vậy, thay vào đó, tôi đã tìm kiếm một phạm vi miễn phí, chọn một số cổng và dường như bây giờ đang hoạt động.

Tôi rất muốn nghe nếu ai đó có thể giải thích tại sao điều này có thể hoạt động?


Giải pháp này cũng đã sửa nó cho tôi.
Rastographics

1

Tôi đã gặp sự cố này trong Visual Studio 2019 ngày hôm nay và đã dành 3 giờ trước khi cuối cùng tìm ra sự cố. Visual Studio sử dụng 2 tệp để theo dõi số cổng SSL, vì vậy bạn phải sửa cả hai và bạn phải sửa cả hai khi Visual Studio đóng. Hai tệp là tệp applicationhost.config nằm trong thư mục .vs \ ??? \ config của giải pháp của bạn; và cả thư mục .csproj.user của dự án web của bạn. Chỉnh sửa cả hai tệp và xóa cấu hình vi phạm. Thậm chí có thể chỉ cần xóa cả hai tệp. Sau đó, mở lại ứng dụng của bạn trong Visual Studio. Chúc may mắn!


Nếu giải pháp của bạn có chứa một trang web đơn giản theo phong cách cũ (không phải là một ứng dụng web) thì số cổng cũng có trong file giải pháp sln
nuander

1
  1. Đóng studio trực quan
  2. xóa thư mục ".vs"
  3. Thử thay đổi cổng "localhost: 8080"

Nó đã làm việc cho tôi.


1

Tôi đã làm theo hướng dẫn của @ Zoti và sử dụng Resource Monitor để tìm cổng được đề cập.

Hóa ra Outlook đã ngẫu nhiên được chỉ định cổng cho kênh liên lạc của nó. Đạo đức của câu chuyện hiện hữu, nó hoàn toàn có thể là bất cứ điều gì.


1

Lý do cho lỗi này là bạn cung cấp sai số cổng cho ứng dụng của mình.

just use http ports for your application to run

sử dụng cổng gần số 8080, tức là:

localhost: 8090

để thay đổi cổng cho ứng dụng của bạn trong visual-Studio

goto project properties > web > Server > ProjectUrl


0

Tôi đã thử những điều sau:

  • Đã khởi động lại Visual Studio
  • Kiểm tra tất cả các cổng có sẵn có thể đang nghe số cụ thể của tôi nhưng nó luôn trả về kết quả bằng không. Không có quy trình nào đang nghe trong cổng của tôi.
  • Tôi cũng đã thử sử dụng cái này nhưng không có kết quả.

    netstat -aon | tìm ": 80"

  • Tôi cũng đã thử sử dụng nhưng cũng trả về kết quả bằng không.

    netstat -ao | người tìm kiếm

Vì vậy, những gì tôi đã làm là xóa " Microsoft.VsHub.Server.HttpHostx64.exe này " sau đó dự án của tôi bắt đầu thành công và khởi chạy trong trình duyệt. Lỗi đã được sửa. Tôi không chắc tại sao nhưng nó hoạt động.

Đây là ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


0

Tôi gặp sự cố tương tự nhưng nó đã giải quyết được khi tôi khởi động lại bằng đặc quyền quản trị viên. (Có thể vừa mới khởi động lại)


0

Tôi đã gặp vấn đề tương tự ngày hôm nay và không có gì tôi tìm thấy trên internet hoạt động. Tôi đã sử dụng cổng 2057 trong nhiều năm, nhưng đột nhiên nó không hoạt động nữa. Thay đổi nó thành một số thấp khác như 2058 đưa ra thông báo lỗi tương tự, nhưng khi tôi thay đổi nó thành 20057, mọi thứ hoạt động trở lại. Có thể điều gì đó đã thay đổi với cách xử lý số cổng thấp hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.