PUT/POST не работает в собственной конфигурации WCF REST

У меня есть собственный сервер (служба Windows), который поддерживает как SOAP/RPC (это может исчезнуть в будущем), так и REST. RESTful GET работают должным образом, но PUT/POST выдает ошибку 405 (метод не поддерживается). Я почти уверен, что это проблема с конфигурацией моего app.config, но я новичок в этом и не знаю, что попробовать.

Ниже мой файл конфигурации. Любая помощь будет большой признательна...

  <system.serviceModel>
    <!-- bindings -->
    <bindings>
      <basicHttpBinding>
        <binding name ="soapBinding">
          <security mode="None" />
        </binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding name="webBinding" />
      </webHttpBinding>
    </bindings>
    <!-- behaviors -->
    <behaviors>
      <endpointBehaviors>
        <!-- plain old XML -->
        <behavior name="poxBehavior">
          <webHttp/>
        </behavior>
        <!-- JSON -->
        <behavior name="jsonBehavior">
          <enableWebScript  />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="DSServerBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="True"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <!-- services -->
    <services>
      <service behaviorConfiguration="DSServerBehavior" name="dsServer.DSServer">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/DecisionSupportServer" />
          </baseAddresses>
        </host>
        <endpoint address="soap" 
                  binding="basicHttpBinding" 
                  bindingConfiguration="soapBinding" 
                  contract="dsServer.IDSServer" />
        <endpoint address="mex" 
                  binding="mexHttpBinding" 
                  contract="IMetadataExchange" />
        <endpoint address="rest"
                  binding="webHttpBinding"
                  bindingConfiguration="webBinding"
                  behaviorConfiguration="poxBehavior"
                  contract="dsServer.IDSServer" />
      </service>
    </services>
  </system.serviceModel>

person Community    schedule 06.10.2009    source источник
comment
Подтвердить Конфигурация XML была исключена из публикации. Надо будет придумать как его прикрепить.   -  person    schedule 06.10.2009
comment
@Allan: вам просто нужно выделить свой XML (или код), а затем нажать кнопку кода (010 101) на панели инструментов редактора — или нажать Ctrl-K на клавиатуре — чтобы красиво его отформатировать   -  person marc_s    schedule 06.10.2009
comment
Ах! Спасибо за исправление формата поста.   -  person    schedule 06.10.2009
comment
Я добавлю, что интерфейс использует правильные атрибуты, например: [WebInvoke(Method = POST, UriTemplate = Encrypts/{plain})] [OperationContract] String Encrypt (String plain);   -  person    schedule 06.10.2009
comment
У вас действительно есть атрибут, который говорит [WebInvoke(Method = PUT...) в вашем сервисном контракте?   -  person Darrel Miller    schedule 06.10.2009
comment
Да, я знаю. У меня также есть другие методы с WebGet(). Они работают нормально. Кстати, у меня один интерфейс и половина методов для SOAP/RPC, а другая половина для WebGet/WebInvoke.   -  person    schedule 06.10.2009
comment
Странный. У меня есть собственная служба WCF, которая использует нестандартный глагол PATCH, и он отлично работает. Вы пробовали тестировать его из консольного приложения?   -  person Darrel Miller    schedule 06.10.2009
comment
Ранее я пытался использовать CURL для POST. Я просто вернулся и попробовал еще раз, и, похоже, это сработало. Я докопаюсь до сути и отчитаюсь.   -  person    schedule 06.10.2009
comment
Хорошо. Это смущает. Все это работает, даже если оно управляется из Perl-клиента. Спасибо, что заставил меня перепроверить интерфейс консоли. Я бы еще немного покрутил колеса. Я бы просто списал это на ошибку пользователя.   -  person    schedule 06.10.2009


Ответы (1)


Я перепроверил это с помощью CURL и внес небольшое изменение в свой клиент. Это была прямая ошибка пользователя. :(

person Community    schedule 06.10.2009