Going nuts with this issue. I have a solution with 2 projects, one of them is a plain old html with jquery ajax call while the other is a WCF service. The html page will issue a ajax call to the WCF service to get a json string and use it for display purpose.
Now the issue is whenever i run in debug mode, both the html page and the WCF will be started with different port. And this has created a cross-origin issue for me when i perform testing (i.e. getting a 405 Method Not Allowed error with the calling type = OPTIONS in Firefox). I'd triple check the call method on my ajax script and the WCF service is the same (GET).
I'd search google but found that either i have to install a extension or perform some configuration on IIS, which i found cumbersome since what i'm doing is something simple. Following one example, I'd add in the following configuration in my web.config but it didn't work:
<system.serviceModel> <bindings> <webHttpBinding> <binding name="crossDomain" crossDomainScriptAccessEnabled="true" /> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="MobileService.webHttpBehavior"> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> <services> <service name="MobileService.SimpleMemberInfo" behaviorConfiguration="MyServiceBehavior"> <endpoint address="" binding="webHttpBinding" contract="MobileService.IMemberInfo" bindingConfiguration="crossDomain" behaviorConfiguration="MobileService.webHttpBehavior"> </endpoint> </service> </services> </system.serviceModel> <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="GET" /> <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" /> </customHeaders> </httpProtocol> <modules runAllManagedModulesForAllRequests="true"/> <directoryBrowse enabled="true"/> </system.webServer> Any one has any idea to get rid of this annoying issue?
EDIT: Just to add, I'm running the debug with IIS Express that comes together with the VS Studio 2012
Add in WCF Code and Updated web.config
[ServiceContract] public interface IMemberInfo { [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json )] [OperationContract] string GetMemberInfoById(); // TODO: Add your service operations here } My Script:
$(document).ready(function () { $.ajax("http://localhost:32972/SimpleMemberInfo.svc/GetMemberInfoById", { cache: false, beforeSend: function (xhr) { $.mobile.showPageLoadingMsg(); }, complete: function () { $.mobile.hidePageLoadingMsg(); }, contentType: 'application/json', dataType: 'json', type: 'GET', error: function () { alert('Something awful happened'); }, success: function (data) { var s = ""; s += "<li>" + data + "</li>"; $("#myList").html(s); } }); }); 