cuốn sách gpt4 ai đã làm

c# - Lỗi khi cố truy xuất mã thông báo truy cập bằng HttpClient

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 01:13:24 25 4
mua khóa gpt4 Nike

Đã xảy ra lỗi khi cố gắng sử dụng HttpClient để truy xuất mã thông báo truy cập từ máy chủ Windows:

"Hoạt động GSSAPI không thành công do có lỗi - Mã trạng thái không hợp lệ đã được cung cấp (SPNEGO không thể tìm thấy cơ chế thương lượng)."

riêng tư chỉ đọc HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true, AllowAutoRedirect = true }) { Timeout = TimeSpan.FromSeconds(5) };



Nhiệm vụ không đồng bộ công khai GetAuthenticationToken(string accessBrokerHost)
{
thử
{
var reply = đang chờ client.SendAsync(HttpRequestMessage mới(HttpMethod.Get, $"{accessBrokerHost}/Token")).ConfigureAwait(false);


//accessBrokerHost là HTTP SPN được tạo nội bộ trong máy chủ windows


if (!response.IsSuccessStatusCode)
{
ném BrokerNotAvailableException mới();
}
trả về đang chờ phản hồi.Content.ReadAsAsync().ConfigureAwait(false);
}
}

system.ComponentModel.win32Exception bị lỗi do thao tác GSSAPI không thành công do lỗi - Mã trạng thái không hợp lệ đã được cung cấp (SPNEGO không thể tìm thấy cơ chế để thương lượng)

Đoạn mã trên hoạt động tốt trong Windows, nhưng không hoạt động trong Linux (Tôi đang sử dụng Linux Mint). Theo những gì tôi hiểu, nó đề cập đến vấn đề cố gắng xác thực Linux bằng Kerberos mà không có vé Kerberos được kích hoạt.

câu trả lời hay nhất

Cuối cùng, tôi đã tìm ra giải pháp cho vấn đề này.

Giải pháp một:

Bước 1. theo cái này , bạn nên thêm

 AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

Bước 2. bởi vì UseDefaultCredentials = true Không hoạt động ở đây, bạn cần chuyển thủ công thông tin đăng nhập mạng tới HttpClient như hiển thị bên dưới

Máy khách HttpClient = HttpClient mới(HttpClientHandler mới{Thông tin xác thực = NetworkCredential mới("Tên người dùng" "Mật khẩu", "Miền")}

Bước 3. Bạn nên thay đổi phiên bản HttpRequestMessage thành

HttpVersion.Version11.

Giải pháp 2: Bạn cũng có thể chuyển đổi toàn bộ ứng dụng sang NetcoreApp3.0

để giải quyết vấn đề này

Về c# - Lỗi khi cố truy xuất mã thông báo truy cập bằng HttpClient, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57791742/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress