通过JQuery访问自托管控制台应用程序使用JSONP进行跨域访问

时间:2015-06-25 06:26:16

标签: jquery wcf cross-domain jsonp

我正在尝试使用.NET在控制台应用程序中构建自托管服务,然后需要使用JQuery的Ajax调用由云托管的ASP.NET应用程序(WebForm)访问。由于它是跨域的场景,所以我使用JSONP作为调用的数据类型。通过这个调用,我在JQuery方面得到了一个“parsererror”。

以下是我的自托管服务功能代码

Public Function SelfHostedFunc(userName as string, callback as string) as string
        WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json
        WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "http://" & Environment.MachineName)

        Dim returnVal As String = ""
        Try
            Console.WriteLine("Rec  Request From Clinet...")
            returnVal = "Test Message"
        Catch ex As Exception
            returnVal = ex.Message
        Finally
            Dim sb As New System.Text.StringBuilder
            Dim js As New JavaScriptSerializer
            sb.Append(callback & "(")
            sb.Append(js.Serialize(returnVal))
            sb.Append(");")
            SelfHostedFunc = sb.ToString
        End Try
End Function

控制台用于创建端点的主要功能代码

Sub Main()
        Dim baseAddress As String = "http://" & Environment.MachineName & ":8090/TestService"
        Dim oHost As New WebServiceHost(GetType(Service), New Uri(baseAddress))
        Dim ePoint As ServiceEndpoint = oHost.AddServiceEndpoint(GetType(ServiceContract), New WebHttpBinding(), baseAddress & "")

        Dim behaviour As New WebHttpBehavior
        behaviour.AutomaticFormatSelectionEnabled = True
        behaviour.HelpEnabled = True
        ePoint.Behaviors.Add(behaviour)

        oHost.Open()
        Console.WriteLine("Service is up and running")
        Console.WriteLine("Press enter to quit ")
        Console.ReadLine()
        oHost.Close()
        oHost = Nothing
End Sub

JQuery Call for above托管服务。

$.ajax({
                type: "GET",
                dataType: "jsonp",
                crossDomain: true,
                contentType: "application/json; charset=utf-8",
                data: {
                    userName: "testUser"
                },
                jsonpCallback: "someMethod",
                url: "http://192.168.168.168:8090/TestService/SelfHostedFunc?callback=?",
                                       success: function (data) {
                                           alert('success');
                                       },
                                       error: function (jqXHR, status, data) {
                        alert(status);
                       }
            });
        });

我经常收到一个'parseerror',其中包含错误消息,并且没有返回数据。我使用基于web.config文件的配置进行了WCF服务的很多例子,但是因为我在运行时创建服务端点&也没有使用IIS,所以我相信我将无法使用它。

任何人都可以帮助或分享任何我可以用作参考点的链接来帮助我。

由于 卡皮尔

0 个答案:

没有答案