我正在尝试使用.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,所以我相信我将无法使用它。
任何人都可以帮助或分享任何我可以用作参考点的链接来帮助我。
由于 卡皮尔