কোন .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 প্রক্সি বদলানো দরকার নেই।