Оказалось довольно просто с правильной конфигурацией сервиса:
<endpoint address="Web/" binding="webHttpBinding" contract="IMyService"
behaviorConfiguration="WebBehavior"/>
<!-- ... -->
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped" />
</behavior>
</endpointBehaviors>
Я также добавил атрибут WebInvoke
в свой контракт на обслуживание:
[WebInvoke(Method = "POST")]
public interface IMyService {
// ...
}
С этой конфигурацией вы можете позвонить в сервисный метод, просто используя ваш браузер. Так что javascript должен только сделать HTTP-запрос POST к URL, это тривиальная задача, которая не требует каких-либо вещей ASP.NET ServiceManager. JQuery образец:
<script type="text/javascript">
function Button1_onclick() {
$.ajax({
type: "POST",
url: "http://localhost:8000/web/",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
processdata: true
success: function(msg) { /*...*/ },
error: /*..error handler..*/
});
}
</script>
В моем случае мне не нужно было передавать какие-либо параметры службе (фактически мой метод помечен как односторонний). Но добавление параметров лишь немного усложнит ситуацию (вы должны передать в качестве данных строку json вместо пустой строки).