मैं डब्ल्यूसीएफ डाटा सर्विसेज द्वारा लागू ओडाटा एंडपॉइंट पर इकाइयों को पढ़ने/संशोधित करने के लिए एक AJAX- आधारित घटक (केंडोयूआई) का उपयोग करना चाहता हूं।डब्ल्यूसीएफ डेटा सेवा प्रीफलाइट विकल्प अनुरोधों का समर्थन नहीं कर रही है?
सेवा कार्यान्वयन पहली जगह में काफी आसान था:
public class MyFooService : DataService<FooContext>
{
public static void SetEntitySetAccessRules(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Foos", EntitySetRights.AllWrite);
}
}
अब मैं PUT का उपयोग कर संस्थाओं को संशोधित करने में सक्षम होने की उम्मीद कर रहा था। KendoUI एक अच्छा और आसान कॉन्फ़िगरेशन इंटरफ़ेस प्रदान करता है और PUT अनुरोध उत्पन्न करने में एक अच्छा काम करता है।
हम एक क्रॉस-डोमेन अनुरोध कर रहे हैं और सीओआरएस का उपयोग कर रहे हैं। इसलिए, उदाहरण के लिए, फ़ायरफ़ॉक्स PUT भेजने से पहले ओडाटा सेवा के लिए प्रीफलाइट विकल्प अनुरोध भेजता है।
दुर्भाग्य से सेवा एंडपॉइंट विकल्प के बाहर विकल्प का समर्थन नहीं करता है: विकल्प अनुरोध का जवाब खाली सामग्री के साथ "501 लागू नहीं किया गया" है। कम से कम हम कामयाब रहे कि प्रतिक्रिया CORS हैडर है:
<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>
इस के लिए Googling थोड़ा चुनौतीपूर्ण है क्योंकि "विकल्प" एक बहुत ही लोकप्रिय शब्द है पता चला है ...
मैं this article पाया, लेकिन यह बहुत लगता है, बहुत जटिल। मेरा मतलब है, ओडाटा आरईएसटी के बारे में है, मैं कल्पना नहीं कर सकता कि डब्ल्यूसीएफ डाटा सर्विसेज प्रीफलाइट अनुरोधों को अनुमति देने का एक आसान तरीका प्रदान नहीं करता है, या?
मैं इसे ले कि WCF OData सेवा डब्ल्यूसीएफ पर काम करती है और उसी डब्ल्यूसीएफ पाइपलाइन के माध्यम से गुजरती है। यदि ऐसा है तो इस [उत्तर।] में लिंक देखें (http://stackoverflow.com/questions/11597314/origin-http-localhost-is-not-allowed-by-access-control-allow-origin/11606701#11606701)। आईएमएचओ डब्ल्यूसीएफ में सीओआरएस को लागू करने का सबसे आसान तरीका है। – Obaid
मुझे पता है कि यह वही नहीं है जो आप चाहते हैं लेकिन मुझे लगता है कि क्रॉस डोमेन अनुरोधों के साथ काम करने का सबसे आसान तरीका आईआईएस रिवर्स प्रॉक्सी का उपयोग करना है। इस तरह आप केवल अपने डोमेन के खिलाफ जाते हैं और आईआईएस वह है जो आपके डोमेन को अन्य डोमेन भेजता है। फिर, आपके कोड को अन्य डोमेन के बारे में कुछ भी नहीं पता है। – lontivero
यादृच्छिक रूप से इस पर ठोकर खाई; बस सोचा कि मैं [इस] से लिंक करूंगा (https://stackoverflow.com/questions/19808069/wcf-dataservice-odata-and-cors) और [वह] (https://data.uservoice.com/forums/ अतिरिक्त चर्चा के लिए 72027-डब्ल्यूसीएफ-डाटा-सर्विसेज-फीचर-सुझाव/सुझाव/445044 9-कॉर्स-सपोर्ट)। – tne