IIS Express đưa ra lỗi Access Denied khi gỡ lỗi ASP.NET MVC


102

Tôi đã tạo một dự án ASP.NET MVC 3 và đang sử dụng IIS Express làm máy chủ web khi phát triển. Khi tôi cố gắng gỡ lỗi, tôi nhận được thông báo lỗi bên dưới.

Làm thế nào điều này có thể được giải quyết?

lỗi server trong ứng dụng '/'

Truy cập bị từ chối. Mô tả: Đã xảy ra lỗi khi truy cập các tài nguyên cần thiết để phục vụ yêu cầu này. Máy chủ có thể không được định cấu hình để truy cập vào URL được yêu cầu.

Thông báo lỗi 401.2: Không được phép: Đăng nhập không thành công do cấu hình máy chủ. Xác minh rằng bạn có quyền xem thư mục hoặc trang này dựa trên thông tin xác thực bạn đã cung cấp và các phương pháp xác thực được bật trên máy chủ Web. Liên hệ với quản trị viên của máy chủ Web để được hỗ trợ thêm.


3
bạn có đang chạy IISExpress mà không có Đặc quyền quản trị không?
chandmk

2
Vì vậy, sau khi đập đầu vào điều này một lúc, tôi cuối cùng nhận ra đó là vì VS chưa đặt trang mặc định và rõ ràng IISExpress.exe không cung cấp danh sách thư mục để làm cho điều đó rõ ràng.
Mark Allen

Câu trả lời:


113

Nếu bạn đang sử dụng Visual Studio, bạn cũng có thể nhấp chuột trái vào dự án trong Giải pháp Explorer và thay đổi thuộc tính Xác thực Windows thành Đã bật trong cửa sổ Thuộc tính .


2
Điều này không dành riêng cho Visual Studio 2012, nó cũng có thể được thực hiện ít nhất trên Visual Studio 2010.
Loïc Lopes.

5
Làm việc cho tôi trong VS 2013.
kaybee99

2
Bạn cũng cần tắt xác thực Ẩn danh.
Glazed

1
Trong giải pháp Explorer nhấp vào tên dự án dưới nút giải pháp, sau đó chuyển sang cửa sổ Properties, có bạn có thể thấy hữu Windows Authentication đặt nó vào Enabled
sairfan

1
Tôi không thấy cài đặt này ở bất kỳ đâu trong cửa sổ thuộc tính. Tôi đang sử dụng VS 2015.
Mark Bonafe 11/09/19

99

Nguyên nhân nếu có cho sự cố này là IIS Express không cho phép WindowsAuthentication. Điều này có thể được kích hoạt bằng cách cài đặt

<windowsAuthentication enabled="true">

trong tệp applicationhost.config ở C: \ Users [tên người dùng] \ Documents \ IISExpress \ config.


19
Visual Studio 2010 và 2012 có thể thêm cài đặt này cho bạn, mỗi dự án, do đó các thiết lập toàn cầu là không thay đổi từ mặc định của nó, xem stackoverflow.com/a/7168308/23566
Robert Claypool

Tôi đang thử cài đặt đó, vì tôi cũng gặp lỗi này trong VS 2013 theo thời gian, hãy xem nó có hữu ích không, tôi sẽ cho bạn biết.
Matt,

2
Tốt hơn nếu bạn sử dụng% userprofile% \ Documents \ iisexpress \ config \ applicationhost.config. Của tôi đã được trên D: (cảm ơn Dan! Danesparza.net/2014/09/… )
Jeramy Rutley

Đây là giải pháp duy nhất làm việc cho tôi, cảm ơn rất nhiều!
Mohammad Anini

Đã thử điều này trong VS 2017 và nó không hoạt động. Giải pháp được đăng bởi Jason đã hoạt động.
myroslav

73

Tôi đã sử dụng câu trả lời của Jason nhưng muốn làm rõ cách vào tài sản.

  1. Chọn dự án trong Giải pháp Explorer

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

  1. F4 để truy cập thuộc tính (khác với thuộc tính nhấp chuột phải)
  2. Thay đổi Xác thực Windows thành Đã bật

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


3
Cảm ơn bạn đã đánh vần điều này và chỉ rõ rằng đó là các thuộc tính F4 cần được thay đổi.
PeterDNCO

1
Cảm ơn bạn! Tôi cũng phải đặt 'Xác thực ẩn danh' thành 'Đã bật'.
Mahesh

1
Big Thank You too!
FunMatters

1
Bạn thật đẹp.
kosherjellyfish

1
Tôi đang sử dụng VS 2015, điều này không tồn tại!
Mark Bonafe

18

Lưu trữ trên IIS Express: 1. Nhấp vào dự án của bạn trong Trình khám phá giải pháp để chọn dự án. 2. Nếu ngăn Thuộc tính không mở, hãy mở nó (F4). 3. Trong ngăn Thuộc tính cho dự án của bạn: a) Đặt "Xác thực ẩn danh" thành "Đã tắt". b) Đặt "Xác thực Windows" thành "Đã bật".


12

Trong trường hợp của tôi, tôi phải mở tệp:

C:\...\Documents\IISExpress\config\applicationhost.config

Tôi có cái này bên trong tệp:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Tôi chỉ loại bỏ User=""một phần. Tôi thực sự không biết làm thế nào mà thứ này đến đó ... :)

Lưu ý: Hãy chắc chắn rằng bạn có một cái gì đó giống như thế này ở cuối applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

Bạn cũng có thể muốn xem tại đây: https://stackoverflow.com/a/10041779/114029

Bây giờ tôi có thể truy cập trang đăng nhập như mong đợi.


1
Tôi đã làm theo các bước của bạn vẫn không làm việc cho tôi. Nếu mở từ vs2010, nó hoạt động tốt, vấn đề là gì so với 2013
GANI

@ user1016740 Tôi không chắc vì có rất nhiều khả năng / con đường cần tuân theo để giải quyết vấn đề này. Các bước tôi mô tả ở đây đã giải quyết nó trong môi trường của tôi mà tôi cho là khác với môi trường của bạn.
Leniel Maccaferri

8

Trong trường hợp của tôi, một lần chạy ứng dụng trước đây của tôi từ VS đã bảo lưu URL. Tôi có thể thấy điều này bằng cách chạy trong bảng điều khiển:

netsh http show urlacl

để xóa đặt chỗ này, tôi đã chạy nó trong một bảng điều khiển nâng cao :

netsh http delete urlacl http://127.0.0.1:10002/

Tôi thấy các bước này ở đây đã giải quyết được vấn đề của tôi.

Tôi đang sử dụng VS2013


Điều này cực kỳ hữu ích nếu bạn đã từng chỉnh sửa applicationhost.config của mình để chạy một trang web trên nhiều cổng cùng một lúc. Xóa các mục từ .config không xóa bất kỳ đặt chỗ nào trong netsh. Cảm ơn anh bạn.
Dusda

5

Tôi đã phải chạy Visual Studio Administrative Modeđể loại bỏ lỗi này.


3

Tôi cũng gặp vấn đề tương tự và cuối cùng tôi đã có thể vượt qua nó.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

Tôi đã chọn một số cổng khác , và mọi thứ đều trở nên tốt đẹp!


1

Không có điều nào ở trên đã làm việc cho tôi. Điều này đã làm việc cho tôi trước ngày hôm nay. Sau đó, tôi nhận ra rằng tôi đã làm việc với việc tạo kết nối được lưu trữ trên máy tính xách tay của mình và đã chia sẻ kết nối internet với Kết nối mạng không dây của mình.

Để khắc phục sự cố của tôi:

Đi tới Bảng điều khiển> Mạng và Internet> Kết nối mạng

Nhấp chuột phải vào bất kỳ Kết nối Mạng Không dây thứ cấp nào mà bạn có thể có (của tôi được đặt tên là Kết nối Mạng Không dây 2) và nhấp vào 'Thuộc tính'.

Chuyển đến tab 'Chia sẻ' ở trên cùng.

Bỏ chọn hộp có ghi 'Cho phép người dùng mạng khác kết nối qua kết nối Internet của máy tính này'.

Nhấn OK> rồi nhấn nút Apply.

Hi vọng điêu nay co ich!


1

Tôi đã mở tệp web.config của mình, tìm và xóa phần này:

<authorization>
  <deny users="?" />
</authorization>

và trang web của tôi đã xuất hiện, nhưng có những vấn đề về xác thực ..


Được rồi, Nó đã giúp giải quyết sự cố nhưng bây giờ tôi có một số sự cố khác cần khắc phục.
Jamshaid Kamran

0

Tôi vừa khắc phục sự cố chính xác này trong IIS EXPRESS đã khắc phục sự cố bằng cách chỉnh sửa .config máy chủ ứng dụng thành phần vị trí cụ thể như bên dưới. Tôi đã đặt Xác thực Windows trong Visual Studio 2012 nhưng khi tôi đi vào XML, nó trông như thế này.

thẻ auth cửa sổ cần được thêm vào bên dưới như được hiển thị.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>

0

Tôi đã gặp khó khăn với sự cố này khi cố gắng tạo một Ứng dụng đơn giản cho SharePoint bằng cách sử dụng Nhà cung cấp được lưu trữ.

Sau khi xem qua applicationhost.config, trong phần này, basicAuthentication được đặt thành false. Tôi đã thay đổi nó thành true để vượt qua 401.2 trong kịch bản của mình. Có rất nhiều liên kết khác về cách tìm applicationhost.config cho IIS Express.


0

Tôi không thấy câu trả lời "hoàn chỉnh" này ở đâu cả; Tôi vừa nhìn thấy một về việc thay đổi số cổng sau khi tôi đăng điều này, vì vậy meh.

Đảm bảo rằng trong thuộc tính dự án của bạn trong studio trực quan, url dự án đó không được gán cho cùng một url hoặc cổng đang được sử dụng trong IIS cho bất kỳ ràng buộc trang web nào.

Tôi đang tìm kiếm "tại sao" cho điều này, nhưng giả định của tôi là cả IIS và Visual Studio's IIS express sử dụng cùng một thư mục khi tạo thư mục ảo và Visual Studio chỉ có thể tạo thư mục ảo mới và không thể sửa đổi bất kỳ mà IIS đã tạo khi áp dụng các ràng buộc của nó với trang web.

vui lòng sửa cho tôi về lý do tại sao.


0

Trang lỗi của chúng tôi nằm sau trang đăng nhập, nhưng trang đăng nhập có lỗi ở một trong các điều khiển, điều này tạo ra một vòng lặp vô hạn.

Chúng tôi đã xóa tất cả các kiểm soát khỏi trang vi phạm và thêm lại từng kiểm soát một cho đến khi xác định được và sửa lỗi kiểm soát chính xác.


0

Trong trường hợp của tôi (ứng dụng ASP.NET MVC 4), Global.asaxtệp bị thiếu. Nó xuất hiện trong Trình thám hiểm giải pháp với một dấu chấm than. Tôi đã thay thế nó và lỗi đã biến mất.

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.