所以,是的,这是我第二次WCF部署当晚头痛(with this being the first)。
基本上,从最后一个问题开始,我成功地将一个简单的WCF服务部署到IIS 5.1上托管的登台服务器。现在的问题是,使用vanilla SOAP的服务端点正在运行,而那些利用JSONP调用的服务端点正在抛出404错误。
我正在使用jQuery的原始.ajax()
函数通过JSONP调用我的.svc
,例如:
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url : 'http://localhost/wcf/client.svc/test?mycallback=?',
data : '{}',
dataType: 'jsonp',
success: function (m) {
alert(JSON.stringify(m));
},
error: function (x, s, d) {
alert(d);
}
});
...调用端点编码如:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml)]
public void test()
{
string callback =
WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["mycallback"];
HttpContext.Current.Response.Write(
callback + "({'foo':'bar'})"
);
}
显然,这在我的本地开发环境中运行良好。一旦我将所有这些移植到IIS 5.1上的登台服务器(即调用http://staging:8000/wcf/client.svc/test?mycallback=?
),服务器就会抛出404错误。
我真的不知道发生了什么事。我可以访问http://staging:8000/wcf/client.svc
就好了(并获得与众不同的WCF服务登录页面),所以我知道服务就在那里。我只是想,IIS 5.1可能会与解析JSONP网址混淆?老实说,我不太确定。
有关于此的任何想法吗?