আমি এনসুরসুকসেসটাসটাসকোড পছন্দ করি না কারণ এটি কোনও অর্থ ফেরত দেয় না। এজন্য আমি আমার নিজস্ব এক্সটেনশন তৈরি করেছি:
public static class HttpResponseMessageExtensions
{
public static async Task EnsureSuccessStatusCodeAsync(this HttpResponseMessage response)
{
if (response.IsSuccessStatusCode)
{
return;
}
var content = await response.Content.ReadAsStringAsync();
if (response.Content != null)
response.Content.Dispose();
throw new SimpleHttpResponseException(response.StatusCode, content);
}
}
public class SimpleHttpResponseException : Exception
{
public HttpStatusCode StatusCode { get; private set; }
public SimpleHttpResponseException(HttpStatusCode statusCode, string content) : base(content)
{
StatusCode = statusCode;
}
}
মাইক্রোসফ্ট এর এনসুরসুসেসটাসটাসকোডের উত্স কোডটি এখানে পাওয়া যাবে
SO লিঙ্কের উপর ভিত্তি করে সিঙ্ক্রোনাস সংস্করণ :
public static void EnsureSuccessStatusCode(this HttpResponseMessage response)
{
if (response.IsSuccessStatusCode)
{
return;
}
var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
if (response.Content != null)
response.Content.Dispose();
throw new SimpleHttpResponseException(response.StatusCode, content);
}
ইসসুকসেসটাসটাসকোড সম্পর্কে আমি যা পছন্দ করি না তা হ'ল এটি "সুন্দরভাবে" পুনরায় ব্যবহারযোগ্য নয়। উদাহরণস্বরূপ, আপনি নেটওয়ার্ক সমস্যার ক্ষেত্রে কোনও অনুরোধের পুনরাবৃত্তি করতে পলির মতো লাইব্রেরি ব্যবহার করতে পারেন । সেক্ষেত্রে আপনাকে ব্যতিক্রম বাড়াতে আপনার কোডের প্রয়োজন যাতে পলি বা অন্য কোনও গ্রন্থাগার এটি পরিচালনা করতে পারে ...