Cross-Domain-GET-Anforderung an ASP.NET web-service von jQuery scheitern

Ich versuche zu verstehen, cross-domain-Aufrufe zu einem web-service von jQuery, ajax. Ich habe eine web-service läuft in einem Projekt und einer einfachen ASP.NET web-Anwendung in eine andere.

Web-Service-code -

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public string HelloWorld()
    {
        string json = "Hello World";

        string jsoncallback = HttpContext.Current.Request["callback"];
        if (string.IsNullOrWhiteSpace(jsoncallback))
        {
            return json;
        }
        else
        {
            return string.Format("{0}({1})", jsoncallback, json);
        }

    }

Aufruf der web service von einer Seite -

    $(function () {
        $("#btnCall").click(function () {
            var urlToCall = "http://localhost:55172/SampleWebService.asmx/HelloWorld";
            $.ajax({
                url: urlToCall,
                type: "GET",
                dataType: "jsonp",
                contentType: "application/javascript",
                jsonpCallback: "MyFunc",
                error: function () {
                    console.log("Error!");
                },
                success: function () {
                    console.log("Success!!");
                }
            });
            return false;
        });
        function MyFunc() {
            console.log("Callback fired!");
        }
    });

Wie Sie sehen können, bin ich dem Aufruf der webservice auf eine Schaltfläche klicken. Aber dieser Aufruf fehlschlägt sagen,

Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/HelloWorld'.

Dies ist behoben, wenn ich fügen Sie die folgende auf meiner Website.config -

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

Aber wenn ich das mache, egal was ich mache, meine Daten immer wieder in ein XML-format. Ich brauche die Daten in ein gültiges JSON-format, was kann ich tun?

Beachten Sie auch, dass ich in der Lage bin, zum Aufruf dieses webservice aus einer aspx-Seite im selben Projekt, und das scheint zu funktionieren nur fine.

Sie scheinen zu erwarten, dass jsoncallback, aber jquery wird, anstatt nur das senden einer param-namens callback.
Vielleicht dieser link wird dir helfen: stackoverflow.com/questions/8205081/...
Korrigiert dass. Aber das machte keinen Unterschied, das ist das, was ich erwartet hatte.

InformationsquelleAutor Abijeet Patro | 2013-09-12

Schreibe einen Kommentar