Azure 405 метод не допускается ошибка ... - PullRequest
0 голосов
/ 03 марта 2012

Нужна помощь с этой ошибкой

У меня есть служба Azure WCF, которую я вызываю из Javascript.Однако, когда я вызываю свою службу WCF из JavaScript, я получаю следующую ошибку: - Метод 405 не разрешен

В интерфейсе службы службы WCF выглядит так:интерфейс:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class CSServiceLevel : ICSServiceLevel
{
    public List<ServiceLevel> GetServiceLevel(long id)
    {
        List<ServiceLevel> retValue;
        //...
        return (retValue);
    }
}

Web.config для роли службы:

 <system.serviceModel>
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
         <services>
             <service behaviorConfiguration="CloudWCFServiceBehavior" name="CSServiceLevel">
                 <endpoint address="" binding="webHttpBinding" behaviorConfiguration="JsonEndpointBehavior"
    contract="Services.ICSServiceLevel" />
                 <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
             </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="CloudWCFServiceBehavior">
                <useRequestHeadersForMetadataAddress>
                    <defaultPorts>
                        <add scheme="http" port="81"/>
                        <add scheme="https" port="444"/>
                    </defaultPorts>
                </useRequestHeadersForMetadataAddress>
             <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
       </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="JsonEndpointBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>


And finally the way I call it is :


var data = '{ "id" : -1}';
$.ajax({
    data: data, cache: false, success: populateCustomerGrid,
    type: "POST", dataType: "json", contentType: "application/json",
    url: "http://mydomain.cloudapp.net:81/CSServiceLevel.svc/getservicelevel"
});

Кто-нибудь видел, в чем может быть проблема?Кроме того, в определении веб-роли для службы я делаю конечную точку 81

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Вы установили привязки для портов 81 и 444 в файле .csdef?

Возможно, вы также захотите подключить Fiddler и убедиться, что отправляете правильную вещь.Обычно в JQuery вы передаете данные в виде объекта, а не предварительно сериализованной строки JSON, что также может вызвать проблему.

0 голосов
/ 04 марта 2012

Почему вы используете глагол POST вместо глагола GET?Ваше имя метода подразумевает, что это идемпотентный ресурс только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...