آیا امکان اجرای API روی IIS تنها برای یک سرور وجود دارد؟
نویسنده: هادی مزارعی
تاریخ: ۱۴۰۳/۰۵/۱۱ ۲۱:۱۱
آدرس: www.dntips.ir
سلام
یک API دارم که قراره روی یک سرور و توسط IIS اجرا بشه. برنامه کلاینت یک برنامه WindowApp هستش. در حال حاضر این دو با هم ارتباط دارند و با بخوبی کار میکنند. ولی این امکان نیز وجود داره که API را در جای سرور دیگری نیز اجرا و مجددا استفاده کنند. آیا همانند برنامه های ویندوزی امکان این وجود داره که یک برنامه API جهت تشخیص سرور مورد نظر، اطلاعات سخت افزاری سرور را بررسی کند یا راه حل دیگه ای برای این موضوع وجود داره؟
تشکر
کتابخانه «DNTCommon.Web.Core» به همراه روشی چندسکویی برای دریافت اطلاعات سرور هم هست. پس از دریافت اطلاعات، فقط کافی است یک AuthorizationFilter سفارشی را برای بررسی آن طراحی کنید:
public class RestrictServerAttribute : Attribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
if (/* check server info */)
{
// Request came from an unauthorized host, return bad request
context.Result = new BadRequestObjectResult("Host is not allowed");
}
}
}
و سپس آنرا به صورت یک فیلتر سراسری معرفی کنید تا به همهجا اعمال شود:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(options =>
{
options.Filters.Add(new RestrictServerAttribute());
});
}