WCF DataServices tarafından uygulanan bir OData bitiş noktasında varlıkları okumak/değiştirmek için ajax tabanlı bir bileşen (KendoUI) kullanmak istiyorum. WCF DataService, ön kontrol opsiyonlarını desteklemiyor mu?
hizmet uygulaması
ilk etapta oldukça kolaydı:public class MyFooService : DataService<FooContext>
{
public static void SetEntitySetAccessRules(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Foos", EntitySetRights.AllWrite);
}
}
Şimdi PUT kullanarak varlıkları değiştirme muktedir bekliyordum. KendoUI, güzel ve kolay bir yapılandırma arayüzü sağlar ve PUT isteğini oluştururken iyi bir iş çıkarır.
Web alanları arası bir istekte bulunuyor ve CORS kullanıyoruz. Yani, Firefox, örneğin, PUT göndermeden önce OData servisine bir ön kontrol OPTIONS isteği gönderir.
Ne yazık ki hizmet bitiş noktası, OPTIONS'ı kutudan desteklemiyor gibi görünüyor: OPTIONS isteğine yanıt, boş bir içeriğe sahip "501 Uygulanmadı". En azından şöyle yanıt CORS başlıklarını sahip olduğunu başardı: ... Bu Googling
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<!-- Enable cross-origin resource sharing -->
<!-- http://enable-cors.org/#how-asp.net -->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, PUT, DELETE, GET, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="content-Type, accept, origin, X-Requested-With" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
</system.webServer>
çok popüler bir terim olduğu için "seçenekler" zorlu biraz dönüştü
Ben this article buldum ama Bu çok, çok karmaşık görünüyor. Demek istediğim, OData'nın tümü REST'le ilgili, WCF Veri Hizmetlerinin önkontrol isteklerine izin vermenin basit bir yolunu sağladığını düşünemiyorum, ya da?
WCF OData Servis WCF üzerinde çalışır ve aynı WCF boru hattından geçer. Eğer öyleyse bu bağlantıyı kontrol edin [cevap] (http://stackoverflow.com/questions/11597314/origin-http-localhost-is-not-allowed-by-access-control-allow-origin/11606701#11606701). IMHO, CORS'i WCF'ye yerleştirmenin en kolay yoludur. – Obaid
Bunun tam olarak ne istediğinizi bilmediğini biliyorum ancak çapraz etki alanı istekleriyle çalışmanın en kolay yolu yalnızca IIS'nin ters proxy'sini kullanmaktır. Bu şekilde yalnızca kendi etki alanınıza karşı gelirsiniz ve IIS, isteğinizi diğer etki alanına gönderen kişidir. Ardından, kodunuzun diğer alanlarla ilgili bir şey bilmesi gerekmez. – lontivero
Rastgele bu konuda tökezledi; sadece bu [https://stackoverflow.com/questions/19808069/wcf-dataservice-odata-and-cors] ve [bu] ile bağlantı kuracağımı düşündüm (https://data.uservoice.com/forums/ Ek tartışma için 72027-wcf-data-services-feature-suggestions/suggestions/4450449-cors-support). – tne