API وب ASP.NET مایکروسافت یک چارچوب سبک است که می توانید از آن برای ساخت سرویس های بی سیم RESTful که با HTTP استفاده می کنند ، استفاده کنید. خطا در asp.net استثنائات خطاهایی هستند که در زمان اجرا رخ می دهند ، و هندل کردن استثناء روش رسیدگی به زمان ایران هاست اجرا در کد برنامه شما است.

هر توسعه دهنده وب API ASP.NET باید بداند چگونه استثنائات را در Web API کنترل کند و چگونه می تواند کدهای خطایی و پیام های خطایی مناسب را از روش های کنترل کننده API وب ارسال کند. خطا در asp.net ما در بخش های زیر نحوه انجام این کارها را بررسی خواهیم کرد.

[همچنین در InfoWorld: نحوه ورود به فراداده درخواست و پاسخ در API وب ASP.NET]

با استفاده از HttpResponseException در API وب ASP.NET

می توانید از کلاس HttpResponseException برای بازگشت کد ها خطا در asp.net  و پیام های خاص HTTP از روش های کنترل کننده در API وب استفاده کنید. به عنوان مثال.

کارمندان عمومی GetEmployee (شناسه int)

{

Employee emp = staffRepository.Get (id)؛

اگر (emp == null)

{

پاسخ پاسخ = HttpResponseMessage جدید (HttpStatusCode.NotFound)

{

محتوا = StringContent جدید (“کارمند وجود ندارد” ، System.Text.Encoding.UTF8 ، “متن / ساده”) ،

کد وضعیت = HttpStatusCode.NotFound

}

پرتاب HttpResponseException جدید (پاسخ)؛

}

بازگشت امپ؛

}

اگر API وب شما IHttpActionResult را برگرداند ، خطا در asp.net  ممکن است بخواهید روش GetEmployee را مانند شکل زیر بنویسید.

 

عمومی IHttpActionResult GetEmployee (شناسه int)

{

Employee emp = staffRepository.Get (id)؛

اگر (emp == null)

{

پاسخ پاسخ = HttpResponseMessage جدید (HttpStatusCode.NotFound)

{

محتوا = StringContent جدید (“کارمند وجود ندارد” ، System.Text.Encoding.UTF8 ، “متن / ساده”) ،

StatusCode = HttpStatusCode.NotFound

}

پرتاب HttpResponseException جدید (پاسخ)؛

}

بازگشت خوب (امپ)

}

توجه داشته باشید که کد خطا و پیام خطا به شیء پاسخ خطا در مزیت asp.net اختصاص داده شده است ، و نمونه ای از HttpResponseException هنگامی که یک استثناء در روش عمل کنترلر وب API وب ایجاد می شود ، باز می گردد.

استفاده از HttpError در API وب ASP.NET

برای بازگشت به کدهای خطای معنی دار و پیام های خطا می توانید از روش افزودنی CreateErrorResponse در روش کنترلر API وب خود استفاده کنید. توجه داشته باشید که روش CreateErrorResponse یک شیء HttpError ایجاد می کند و سپس آن را درون یک شیء HttpResponseMessage می پیچد.

 

لیست کد زیر نشان می دهد که چگونه می توانید از روش خطا در asp.net اکشن کنترلر وب API خود از روش افزودنی CreateErrorResponse استفاده کنید.

WHITEPAPERS توصیه شده است

نحوه ادغام داده دریاچه و انبار داده

حالت ابر

فناوری اطلاعات در سال 2020: سازگاری با “عادی جدید” کار از خانه

 

عمومی IActionResult GetEmployee (شناسه int)

{

Employee emp = staffRepository.Get (id)؛

اگر (emp == null)

{

string message = “کارمند وجود ندارد”؛

پرتاب HttpResponseException جدید (

Request.CreateErrorResponse (HttpStatusCode.NotFound ، پیام))؛

}

بازگشت خوب (امپ)

}

به روش GetEmployee () نشان داده شده در بالا مراجعه کنید. خطا در asp.net این روش شناسه کارمند را به عنوان یک پارامتر می پذیرد و از این شناسه برای جستجو و بازیابی پرونده کارمند با استفاده از نمونه مخزن کارمند استفاده می کند. اگر سابقه کارمند با داشتن شناسه مشخص شده کارمند پیدا نشود ، خطا در asp.net نمونه ای از HttpResponseException پرتاب می شود. توجه داشته باشید که چگونه متن خطای مناسب و کد خطا قبل از اینکه نمونه استثناء از روش کنترلر وب API پرتاب شود ساخته می شوند.

 

استفاده از فیلترهای استثنائی در API وب ASP.NET

فیلترهای استثناء فیلترهایی هستند که می توانند برای مدیریت استثنائات غیرقابل کنترل که در روشهای کنترلر API وب شما ایجاد می شوند ، مورد استفاده قرار گیرند. به عبارت دیگر ، خطا در asp.net شما می توانید از فیلترهای استثنائی برای گرفتن استثنائات غیرقابل کنترل در API وب استفاده کنید که از روش های کنترل کننده شما سرچشمه گرفته است. توجه داشته باشید که اگر استثنائات غیرقابل کنترل در روش های کنترل کننده شما مورد استفاده قرار گیرد ، یک فیلتر خطای جهانی روش مناسبی برای استفاده از استثنائات در API وب شما است.

برای ایجاد یک فیلتر استثنا ، شما باید رابط IExceptionFilter را پیاده سازی کنید. با گسترش کلاس انتزاعی ExceptionFilterAttribute و سپس نادیده گرفتن روش OnException همچنین می توانید فیلترهای استثنائی ایجاد کنید. توجه داشته باشید که کلاس انتزاعی ExceptionFilterAttribute به نوبه خود رابط IExceptionFilter را پیاده سازی می کند.

 

قطعه کد زیر نشان می دهد که چگونه می توانید با گسترش کلاس ExceptionFilterAttribute و سپس غلبه بر روش OnException ، یک فیلتر استثنایی سفارشی ایجاد کنید. خطا در asp.net توجه داشته باشید که چگونه استثنائات استاندارد پرتاب شده توسط روش های کنترل کننده شما توسط فیلتر استثناء سفارشی گرفته می شود و سپس با HttpStatusCode مناسب به اشیاء HttpStatusResponse تبدیل می شود.

 

کلاس عمومی CustomExceptionFilter: ExceptionFilterAttribute

{

انکار عمومی از اعتبار ساقط OnException (HttpActionExpededContext اقدام اکسپرس Context)

{

وضعیت HttpStatusCode = HttpStatusCode.InternalServerError؛

پیام رشته = String.Empty؛

var specialType = actionExecutedContext.Exception.GetType ()؛

اگر (استثناء نوع == نوع (غیرمجازAccessException))

{

پیام = “دسترسی به API وب مجاز نیست.”؛

status = HttpStatusCode. غیر مجاز؛

}

در غیر اینصورت (استثناء Type == نوع (DivideByZeroException))

{

پیام = “خطای سرور داخلی.”؛

status = HttpStatusCode.InternalServerError؛

}

دیگر

{

پیام = “یافت نشد.”؛

وضعیت = HttpStatusCode.NotFound؛

}

actionExecutedContext.Response = HttpResponseMessage جدید ()

{

محتوا = StringContent جدید (پیام ، System.Text.Encoding.UTF8 ، “متن / ساده”) ،

کد وضعیت = وضعیت

؛

base.OnException (actionExecutedContext)؛

}

}

شما باید فیلتر استثنا دلخواه را به مجموعه فیلترهای شیء HttpConfiguration اضافه کنید.

 

ثبت نام از درجه اعتبار ساقط عمومی عمومی (پیکربندی HttpConfiguration)

{

پیکربندی.MapHttpAttributeRoutes ()؛

پیکربندی.روشها.MapHttpRoute (

نام: “DefaultApi” ،

مسیرTemplate: “API / {کنترل} / {id}” ،

پیش فرض: new {id = RouteParameter.Optional

پیکربندی.Formatters.Remove (پیکربندی.Formatters.XmlFormatter)؛

config.Filters.Add (جدید CustomExceptionFilter ())؛

}

شما می توانید فیلترهای استثناء خود را به یکی از سه روش زیر ثبت کنید:

 

در سطح عمل

در سطح کنترلر

در سطح جهانی

قطعه کد زیر نشان می دهد که چگونه می توانید یک فیلتر را خطا در asp.net  در سطح عمل ، یعنی به روش عملکرد کنترل کننده خود اعمال کنید.

 

کلاس عمومی EmployeesController: ApiController

{

[NotImplementedExceptionFilter]

کارمندان عمومی GetEmployee (شناسه int)

{

پرتاب NotImplementedException جدید ()؛

}

}

برای استفاده از فیلتر استثنا در سطح کنترلر ، لازم است از ویژگی فیلتر همانطور که در شکل زیر است استفاده کنید.

 

[DatabaseExceptionFilter]

کلاس عمومی EmployeesController: ApiController

{

// برخی از کد

}

همچنین می توانید فیلتر استثناء دلخواه خود را در سطح جهان خطا در asp.net اعمال کنید تا برای همه کنترل کننده های Web API وب کار کند. در اینجا نحوه انجام این کار آورده شده است.

GlobalConfiguration.Configuration.Filters.Add (پایگاه داده جدید اکسپرسFilterAttribute ())؛

قطعه کد زیر نشان می دهد که چگونه می توانید فیلتر استثناء سفارشی را که قبلاً ایجاد کرده ایم به روش کنترلر خود استفاده کنید.

 

[CustomExceptionFilter]

عمومی IEnumerable <string> دریافت ()

{

DivideByZeroException جدید را پرتاب کنید ()؛

}

ASP.NET Web API از استفاده از HttpResponseException برای مقابله با استثناء در سطح کنترلر و در سطح عملکرد پشتیبانی می کند. هنگامی که یک روش عملی در API وب یک استثناء غیرقانونی را به وجود می آورد ، این استثنا به HTTP وضعیت کد 500 ، یعنی “خطای سرور داخلی” ترجمه می شود.خطا در asp.net اگر از HttpResponseException استفاده می کنید ، می توانید کد وضعیتی را که می خواهید در سازنده کلاس HttpResponseException برگردانید ، مشخص کنید. در این روش می توانید کدهای خطایی خود را سفارشی کنید تا به آنها معنا پیدا کند.

https://iwhy.ir/%d8%af%d8%a7%da%a9%d8%b1-%da%86%db%8c%d8%b3%d8%aa-%d9%88-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%b3%d8%aa%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%a7%d9%86-%d8%a8%d8%af.html