أي بيانات اعتماد .NET تخص الوكيل؟
ميّز WebProxy.Credentials وبيانات اعتماد خادم الوجهة وDefaultProxyCredentials عند مصادقة وكيل HTTP.
لـWebProxy مخصص، ضع حساب الوكيل على ذلك الكائن. خصائص اعتماد .NET الأخرى تخدم مستلمين مختلفين:
| الخاصية | المستلم |
|---|---|
WebProxy.Credentials | الوكيل الذي يمثّله ذلك الكائن. |
HttpClientHandler.Credentials | خادم الوجهة. |
DefaultProxyCredentials | وكيل النظام الافتراضي عندما تكون Proxy هي null وتكون UseProxy هي true. |
يوفّر مثال .NET 10 هذا وكيلًا صريحًا وحسابه الخاص:
using System;
using System.Net;
using System.Net.Http;
string password = Environment.GetEnvironmentVariable("PROXY_PASSWORD")
?? throw new InvalidOperationException("Set PROXY_PASSWORD");
var proxy = new WebProxy("http://203.0.113.10:8080")
{
Credentials = new NetworkCredential("proxy-user", password)
};
using var handler = new HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
using var client = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(15)
};
using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
استبدل نقطة الاتصال التوثيقية واستخدم حسابًا يقدّمه المشغّل. إدخال قائمة بلا مصادقة لا يحتاج إلى بيانات دخول مخترعة. بما أن Proxy في المعالج معيّنة صراحةً، فإن DefaultProxyCredentials لا تحل محل WebProxy.Credentials.
لـUseDefaultCredentials أيضًا نطاق خاص بالكائن؛ مصادقة الخادم في المعالج تختلف عن مصادقة الوكيل في WebProxy. إرسال حساب مستخدم العملية ليس استجابة عامة لـ407.
إذا استمر تحدي المصادقة، افحص الآلية الفعلية ونقطة الاتصال المختارة ونسخة العميل/المعالج. قد تسبق مصادقة الوكيل TLS الوجهة، لذا لا تستطيع ترويسة Authorization الخاصة بالموقع الإجابة عنها. لا يزال دعم المصادقة يعتمد على المعالج والمنصة والخدمة وسياسة النشر؛ لا يتطلّب الإعداد تغييرًا عامًا لوكيل Windows.