Ошибка 405 при попытке отправить сообщение в веб-службу

Я позаимствовал следующий код, чтобы попытаться заставить работать службу WCF с поддержкой ajax, поскольку я продолжал получать ошибку, запрещенную методом 405:

$('#btnSave').click(function (e) {
  $.ajax({
    type: "POST",
    url: "AjaxWcf.svc/ConnectionTest",
    contentType: "application/json; charset=utf-8",
    data: '{"name":"Elemenex"}',
    dataType: "json",
    success: function (msg) {
      alert(msg.d);
    },
    error: AjaxFailed
  });

  function AjaxFailed(result) {
    alert(result.status + ' ' + result.statusText);
  }
});

В служебном коде программной части у меня есть следующее:

<OperationContract()> _
<WebInvoke(Method:="POST")> _

Public Function ConnectionTest(ByVal name As String) As String
    Return String.Format("Hello {0}", name)
End Function

Я видел, как сегодня весь день искал в сети, пытаясь найти, в чем может быть проблема. Я видел сообщения, в которых .svc не отображается глагол POST в IIS. Его нет на моем компьютере разработки, но он находится на сервере. Оба дают 405 ошибок.

Может ли это иметь какое-то отношение к разрешенным глаголам в web.config?

У меня пока есть прекрасный сайт, и эта работа (и скоро) действительно произведет хорошее впечатление.

Спасибо!

Ответов (2)

Решение

Вам нужно добавить этот атрибут в свой метод:

ScriptMethodAttribute 

Есть ли у вас эта линия внутри вашей web.config модели обслуживания?

<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
</serviceHostingEnvironment>