ഏത് .NET പ്രവേശനവിവരമാണ് പ്രോക്സിക്കുള്ളത്?
HTTP പ്രോക്സി തിരിച്ചറിയൽ സ്ഥിരീകരണത്തിൽ WebProxy.Credentials, ലക്ഷ്യസെർവർ വിവരങ്ങൾ, DefaultProxyCredentials എന്നിവ വേർതിരിക്കുക.
സ്വന്തം 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 പ്രോക്സി മാറ്റം വേണ്ട.