Localhost からサーバーへの Jquery を使用して WCF サービスを使用しようとしていますが、「405 Method Not Allowed」というメッセージが表示され続けます。
これは私が使用している構成です:
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="jsonp" crossDomainScriptAccessEnabled="true" />
<binding name="jsonpSsl" crossDomainScriptAccessEnabled="true">
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyBehavior"
name="MyWs.Service1">
<endpoint address="" binding="webHttpBinding"
bindingConfiguration="jsonp" contract="MyWs.IService1"
behaviorConfiguration="MyBehavior"/>
<endpoint address="" binding="webHttpBinding"
bindingConfiguration="jsonpSsl" contract="MyWs.IService1"
behaviorConfiguration="MyBehavior"/>
</service>
</services>
JQuery 関数:
$.ajax({
type: "POST",
url: "http://XXX.XXX.XXX.XXX/wcf/Service1.svc/GetData",
data: '{"value":"2340"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessCall,
error: OnErrorCall
});
function OnSuccessCall(response) {
alert(response);
}
function OnErrorCall(response) {
alert(response.status + " " + response.statusText);
}
WCF インターフェイス:
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
string GetData(int value);
メソッドの実装:
public string GetData(int value)
{
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
string json = oSerializer.Serialize(string.Format("You entered: {0}", value));
return json;
}
それを解決する方法はありますか?
ありがとう!