نشر ASP.net core 2.1 WEB API إلى IIS باستخدام Visual Studio Code

1

العمل على مشروع ASP.net core 2.1 web API. أحتاج إلى تمكين واجهة برمجة التطبيقات (API) حتى يمكن الوصول إليها بواسطة تطبيقات العميل التي لدينا أيضًا قيد التطوير.

حتى الآن ، الطريقة الوحيدة التي وجدتها للنشر إلى IIS هي القيام بعملية يدوية:

  • قم بتشغيل dotnet Publish -c Release
  • انسخ الملفات الموجودة في bin \ Release \ netcoreapp2.1 \ Publish \ إلى مجلد IIS Web App

أتساءل عما إذا كانت هناك طريقة أكثر مباشرة للأمام للقيام بذلك.

أيضًا ، يستغرق الأمر بعض الوقت لبناء هذا الإصدار ، لذلك بالنسبة لبيئة التطوير ، تكون العملية بطيئة جدًا. تكمن المشكلة في أنه لا يمكننا السماح بوصول خارجي إلى واجهة الويب WEB عند التشغيل باستخدام F5 على خادم الاختبار المتكامل. كيف يمكننا تمكين بيئة اختبار أكثر مرونة؟

هناك مشكلة أخرى وهي أنه عند الاتصال للحصول على سبيل المثال للجلب ("MyAPIServer / api / MyItems") من تطبيق جافا سكريبت ، أتلقى خطأ CORS:

Failed to load http://localhost:86/api/shit: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8082' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled

هل تمكين CORS ضروري للغاية عند تطوير هذا النوع من التطبيقات؟

إذا أحضرت مثل هذا:

fetch(
    `http://localhost:86/api/shit`,{mode: 'no-cors'}
  )

انا حصلت:

Uncaught (in promise) SyntaxError: Unexpected end of input
at eval (Pos.vue?7f37:68)

1 إجابة

0

فيما يتعلق بمسألة CORs ، يمكنك إضافة ما يلي إلى بدء التشغيل الخاص بك:

public void ConfigureServices(IServiceCollection services)
{
    // Rest of config stuff ...
    services.AddCors();
}

ثم ستحتاج أيضًا إلى إضافة ما يلي.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseCors(builder =>
            {
                builder.WithOrigins("http://localhost:8080",
                                    "http://localhost:8081", 
                                    "http://localhost:8082")   
                       .AllowAnyMethod()
                       .AllowAnyHeader()
                       .AllowCredentials();
                });
                app.UseMvc();
            }
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام