मेरे पास OperationContract
विधि है जहां मैं क्वेरी करने और डेटाबेस में डेटा डालने का प्रयास कर रहा हूं। मैं POST
विधि का उपयोग कर रहा हूं और ब्राउज़र में जावास्क्रिप्ट से सेवा को कॉल कर रहा हूं। डब्ल्यूसीएफ सेवा एक ही डोमेन में है, इसलिए मुझे JSONP
का उपयोग नहीं करना चाहिए। मैं डेटा संशोधित कर रहा हूं इसलिए यह POST
अनुरोध होना चाहिए GET
अनुरोध नहीं। हालांकि मुझे अभी भी "विधि को त्रुटि की अनुमति नहीं है" मिल रहा है। क्या किसी ने इस स्थिति का सामना किया है?WCF WebInvoke POST - विधि को अनुमति नहीं मिली
मेरी सेवा
http://some_url.com/services/ProfileService.svc/json/CurrentUser
अजीब पर बुलाया जा रहा है, यह एक GET
अनुरोध के माध्यम से नाम से जाना जब मैं इस यूआरएल जाना भले ही मैं एक POST
specifiy लगता है। पेज लोड पर, हालांकि, यह POST
अनुरोध का प्रयास कर रहा है।
ब्राउज़र प्रतिक्रिया यूआरएल के लिए जा रहा है जब:
Request URL:http://some_url.com/services/ProfileService.svc/json/CurrentUser
Request Method:GET
Status Code:405 Method Not Allowed
Request Headersview parsed
GET /services/ProfileService.svc/json/CurrentUser HTTP/1.1
यहाँ मेरी विधि है कि मैं फोन करने के लिए कोशिश कर रहा हूँ है:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json)]
public HIPUser GetCurrentUser()
{
string[] domainUser;
string Auth_User = HttpContext.Current.User.Identity.Name.ToString().ToLower();
domainUser = Auth_User.Split('\\');
string user = domainUser[1];
Debug.WriteLine(user);
ProfileManager pm = new ProfileManager();
var results = pm.GetUserByUserName(user);
if (results.Length > 0)
{
return results.First();
}
else
{
Debug.WriteLine("IS NULL");
var x = pm.CreateUser(user, null, null);
Debug.WriteLine(x.UserName);
return x;
}
}
ग्राहक:
function getCurrentUser() {
$.ajax({
type: "POST",
url: "services/ProfileService.svc/json/GetCurrentUser",
contentType: "application/json; charset=utf-8",
data: null,
dataType: "json",
error: function (request, error, u) {
alert('blargherror: ' + error);
},
success: function (result, status) {
alert(result.d);
}
});
}
सुनिश्चित नहीं हैं कि अगर जरूरत लेकिन Web.Config
:
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="metaBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment
aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="ProfileService" behaviorConfiguration="metaBehavior">
<endpoint address="/json"
behaviorConfiguration="jsonBehavior"
binding="webHttpBinding"
bindingConfiguration="secure"
contract="ProfileService" />
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="secure"
contract="ProfileService" />
</service>
</services>
Web.Config के लिए संपादित करें - जोड़ना बाइंडिंग
<bindings>
<webHttpBinding>
<binding name="secure">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</webHttpBinding>
<basicHttpBinding>
<binding name="secure">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
यह आपकी समस्या का समाधान नहीं करेगा, लेकिन शून्य के बजाए डेटा के रूप में '{{" "पास करने के लिए यह एक अच्छा अभ्यास है (http://encosia.com/3-mistakes-to-avoid-when-using-jquery -with-aspnet-ajax /) – Jupaol
लेख के लिए धन्यवाद! – jocey
मुझे आपके कोड में कुछ भी गलत नहीं मिल रहा है, मैंने अभी एक ही कॉन्फ़िगरेशन के साथ एक समान सेवा बनाई है और यह सही तरीके से काम करता है, केवल अंतर ही बाध्यकारी कॉन्फ़िगरेशन = "सुरक्षित" है, मुझे लगता है कि आपने सुरक्षा कारणों से उस बाध्यकारी को पोस्ट नहीं किया है, ठीक है अगर आप पोस्ट कर सकते हैं तो यह उपयोगी होगा। क्या आपने उस बाध्यकारी विन्यास को हटाने की कोशिश की है और देखें कि क्या आप अपनी सेवा तक पहुंच सकते हैं ?? – Jupaol