Так что да, это моя вторая головная боль при развертывании WCF за ночь ( с первым ).
По сути, из этой последней проблемы мне удалось успешно развернуть простую службу WCF на промежуточном сервере, размещенном на IIS 5.1.Проблема в том, что конечные точки службы, использующие ванильный SOAP, работают, а те, которые используют вызовы JSONP, выдают 404 ошибки.
Я использую функцию .ajax()
jQuery для вызова моей .svc
через JSONPс чем-то вроде:
$.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 путается с анализом URL JSONP?Честно говоря, я не уверен.
Есть идеи по этому поводу?