2016-04-13 18 views
5

Bir ASP.NET Web Api v2 web uygulamasına sahibim ve API'ları farklı bir sunucudaki bir istemciden arayabilmem için CORS'yi etkinleştirmeye çalışıyorum.App_Start'ta eksik WebApiConfig.cs. Startup.cs kullanabilir miyim?

Ben WebApiConfig.cs içinde yok edilir ... Bir öğretici here bulunmaktadır ve App_Start klasörde WebApiConfig.cs dosyaya kod satırlarını ekleyerek bahsediyor

var cors = new EnableCorsAttribute("http://localhost:5901", "*", "*"); 
config.EnableCors(cors); 

sorun takip ediyorum App_Start dizini. Yapılandırma ve yönlendirme işlemlerinin çoğunu, web uygulamasının kök dizinindeki Startup.cs dosyasında yapıyorum. Hiç bir WebApiConfig.cs dosya hatırlamıyorum. Bu kod Startup.cs'a ekleyebileceğim bir şey mi?

+0

Evet, 'Startup.cs' öğesine ekleyebilirsiniz. Ancak 'WebApiConfig.cs', yalnızca dahil etmek istediğiniz herhangi bir yöntemle bir 'public static class WebApiConfig' 'dir. – Jasen

+0

@Jasen - Teşekkürler! Eğer 'WebApiConfig.cs' eklemek istedim ve sadece yukarıda belirtilen kodu eklemek istiyorsam, dahil edilmesi gereken bir varsayılan yöntem var mı? Yukarıda belirtilen CORS kodunu nereye ekleyeceğimi düşünüyorum. Çağırılması gereken belirli bir yöntem var mı? Ayrıca, bunu bir yanıt olarak ekleyin ve diğerlerinin görebileceği şekilde seçeceğim ve krediyi alabilirsiniz. – webworm

+0

Ben zaten bu satır var 'app.UseCors (Microsoft.Owin.Cors.CorsOptions.AllowAll);' Yapılandırma (IAppBuilder app) '' Startup.cs' yönteminde. Daha fazla eklemem mi yoksa bu yeterli mi olmalı? – webworm

cevap

4

Sorunuzun cevabı basitçe: Evet, yapabilirsiniz.

Önemli olan tek şey, ayarlarınızı aynı HttpConfiguration örneğine uygulamanız ve ardından app.UseWebApi() uzantı yöntemine geçmenizdir.

WebApiConfig.cs, Web API yapılandırmasını diğer yapılandırma dosyalarından ayırmak için varsayılan Web API şablonu tarafından oluşturulan yalnızca bir boilerplate dosyasıdır. Eğer sadece Owin'i kullanmayı planlıyorsanız, onu görmezden gelebilirsiniz.

[Düzenle] Örnek kod, sizin Startup.csConfiguration yöntemi içinde:

var config = new HttpConfiguration(); 
var cors = new EnableCorsAttribute("http://localhost:5901", "*", "*"); 
config.EnableCors(cors); 
app.UseWebApi(config); 

sonra daha yüksek bir seviyeye Web API de app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); o zaman ayarlarken CORS başlıklarını kullanırsanız, yorumlarına yanıt veren ve ihtiyacınız olmayacak EnableCorsAttribute'u kullanmak için. Durumunuzdaki en önemli fark, CorsAttribute ile CORS başlığının üzerinde iyi dereceli bir konfigürasyona sahip olacağınızdır (örn. Her Eylem metodu için farklı bir CORS başlığı ayarlayabilirsiniz).

app.UseCors'u Configuration yönteminizdeki diğer bir Owin Orta Deposu'ndan önce eklemeyi unutmayın.

+0

Durumumda kimlik doğrulama ve simge belirtimi için OWIN boru hattını kullanıyorum. Yani 'var cors = new EnableCorsAttribute (" http: // localhost: 5901 "," * "," * ") ekleyebileceğimi mi söylüyorsunuz? config.EnableCors (cors); ' ,' public void Yapılandırması (IAppBuilder uygulaması) yöntemine Startup.cs'de HttpConfiguration özelliğini kodda listelenen 'config 'nesnesinin yerine kullandığından emin olmak için? Ayrıca, "Configuration" yönteminde zaten 'app.UseCors (Microsoft.Owin.Cors.CorsOptions.AllowAll);' varsa, gerekli mi? – webworm

+0

Cevabınızı yorumunuzdan sonra düzenleyin. –

+0

Fantastik cevap! Takip için teşekkürler! – webworm