2016-08-22 33 views
8

Ứng dụng web mvc Asp.Net Core của tôi yêu cầu Xác thực Windows. Trong developpement, trên IIS Express, mọi thứ hoạt động nhờ tốt để thiết lập nàyỨng dụng MVC lõi Asp.Net Xác thực Windows trong IIS

launchSettings.json

"iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:61545/", 
     "sslPort": 0 
    } 
    } 

Khi triển khai để IIS, tôi nhận được một trang trống. Yêu cầu đến trang web của tôi nhận được mã lỗi 500.

Tôi đã cố gắng thêm cấu hình này vào Startup.cs, như được giải thích here, mà không thành công.

services.Configure<IISOptions>(options => { 
     options.ForwardWindowsAuthentication = true; 
    }); 

Khi tôi xem trực tiếp thông số xác thực trong IIS, Xác thực Windows được kích hoạt.

Tôi đã tìm thấy một số bài đăng nói về một gói có tên là Microsoft.AspNetCore.Server.WebListener, những người khác về triển khai Middleware tùy chỉnh. Tôi không thể tưởng tượng được tính năng cơ bản này cần nhiều nỗ lực để làm việc. Tui bỏ lỡ điều gì vậy ?

+0

Bạn có chắc chắn lỗi xảy ra do xác thực không? Nếu vậy thì thông báo lỗi là gì? –

+0

Có gì trong nhật ký FREB của bạn? https://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis – blowdart

+0

Bạn có thể thử không quan trọng với ứng dụng nhận dạng hồ bơi trong quản lý IIS: http : //www.iis.net/learn/manage/configuring-security/application-pool-identities –

Trả lời

12

launchSettings.json tệp chỉ được sử dụng bởi VS. Khi bạn xuất bản ứng dụng của mình (hoặc chạy không có VS) launchSettings.json không được sử dụng. Khi bạn chạy với IIS/IISExpress bạn chỉ cần đảm bảo rằng web.config của bạn có cài đặt chính xác. Trong trường hợp của bạn, thuộc tính forwardWindowsAuthToken trong web.config bị thiếu hoặc được đặt thành false. Nó phải được đặt thành true để Xác thực Windows hoạt động. Web.config mẫu trước khi xuất bản sẽ như sau:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/> 
    </system.webServer> 
</configuration> 
+2

Điều này rất hữu ích, cảm ơn thông tin. Bạn có thể cần phải tạo tệp web.config theo cách thủ công nếu nó không tồn tại, xảy ra với tôi bằng cách sử dụng VS 2017, như được mô tả ở đây: [https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet -core-to-iis-with-windows-authentica.html] (https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet-core-to-iis-with-windows-authentica.html) –

1

Bạn cần kiểm tra web.config trong thư mục dự án của bạn. Cài đặt này đã giúp tôi.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="false" /> 
     <windowsAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    </system.webServer> 
</configuration> 
Các vấn đề liên quan