আমার একটি ওয়েব অ্যাপ্লিকেশন রয়েছে (আইআইএস-এ হোস্ট করা) যা একটি উইন্ডোজ পরিষেবাতে কথা বলে। উইন্ডোজ পরিষেবাটি এএসপি.নেট এমভিসি ওয়েব এপিআই (স্ব-হোস্টেড) ব্যবহার করছে এবং তাই জেএসওএন ব্যবহার করে HTTP- র মাধ্যমে যোগাযোগ করা যেতে পারে। ওয়েব অ্যাপ্লিকেশনটি ছদ্মবেশ তৈরি করতে কনফিগার করা হয়েছে, এই ধারণাটি যে ব্যবহারকারী যে ওয়েব অ্যাপ্লিকেশনটিতে অনুরোধ করে তা ওয়েব অ্যাপ্লিকেশন পরিষেবাটিতে অনুরোধ করার জন্য ব্যবহার করা উচিত make কাঠামোটি এর মতো দেখাচ্ছে:
(লাল রঙে হাইলাইট করা ব্যবহারকারীটি নীচের উদাহরণগুলিতে ব্যবহারকারীকে উল্লেখ করা হচ্ছে))
ওয়েব অ্যাপ্লিকেশনটি একটি ব্যবহার করে উইন্ডোজ পরিষেবাতে অনুরোধ করে HttpClient
:
var httpClient = new HttpClient(new HttpClientHandler()
{
UseDefaultCredentials = true
});
httpClient.GetStringAsync("http://localhost/some/endpoint/");
এটি উইন্ডোজ পরিষেবাতে অনুরোধ করে, তবে শংসাপত্রগুলি সঠিকভাবে পাস করে না (পরিষেবাটি ব্যবহারকারী হিসাবে রিপোর্ট করে IIS APPPOOL\ASP.NET 4.0
)। আমি যা হতে চাই তা এই নয় ।
আমি যদি WebClient
পরিবর্তে ব্যবহারের জন্য উপরের কোডটি পরিবর্তন করি তবে ব্যবহারকারীর শংসাপত্রগুলি সঠিকভাবে পাস হয়ে গেছে:
WebClient c = new WebClient
{
UseDefaultCredentials = true
};
c.DownloadStringAsync(new Uri("http://localhost/some/endpoint/"));
উপরের কোড সহ, পরিষেবাটি ওয়েব অ্যাপ্লিকেশনটিতে অনুরোধটি করেছে এমন ব্যবহারকারী হিসাবে ব্যবহারকারীকে রিপোর্ট করে।
আমি HttpClient
প্রয়োগের ক্ষেত্রে কী ভুল করছি যা এর ফলে এটি শংসাপত্রগুলি সঠিকভাবে পাস করতে দেয় না (বা এটি দিয়ে কোনও বাগ রয়েছে HttpClient
)?
যে কারণে আমি এটি ব্যবহার করতে চাই তা HttpClient
হ'ল এতে একটি অ্যাসিঙ্ক এপিআই রয়েছে যা এসগুলির সাথে ভালভাবে কাজ করে Task
, যেখানে WebClient
এর এসাইক এপিআই ইভেন্টগুলির সাথে পরিচালনা করা দরকার।
DownloadStringTaskAsync
নেট নেট in.৫ রয়েছে , যা এসিএনসি / অপেক্ষার সাথেও ব্যবহার করা যেতে পারে
HttpClient
কোনও SetCredentials()
পদ্ধতি নেই। তুমি কি বলতে চাচ্ছো আমাকে?
new HttpClient(new HttpClientHandler() { AllowAutoRedirect = true, UseDefaultCredentials = true }
একটি ওয়েব-সার্ভারে একটি উইন্ডোজ-অনুমোদিতীকৃত ব্যবহারকারী দ্বারা অ্যাক্সেস করা তৈরি করার চেষ্টা করেছি এবং ওয়েব সাইটটি এর পরে অন্য দূরবর্তী সংস্থার জন্য প্রমাণীকরণ করেছিল (পতাকা সেট ছাড়া প্রমাণীকরণ করবে না) would