метод не допускает ошибки при использовании wcf webinvoke post - PullRequest
2 голосов
/ 30 мая 2011

Привет, это Операционный контракт, в котором я собираюсь вставить некоторые данные, поэтому я использую метод POST WebInvoke, но когда я вызываю этот метод, он выдает мне сообщение «Метод не разрешен»

У меня естьизменить какие-либо параметры конфигурации для разрешения вызовов POST в web.config?

 [OperationContract]
 [WebInvoke(
 UriTemplate = "/Album/PostData?name={name}&CrBy={createdBy}" , 
 Method="POST")]
 void PostUserData(string name, string createdBy);

и для того, чтобы я вызывал мою службу, как показано ниже

http://localhost:2170/MySampleService.svc/xml/Album/PostData?name=devpost&CrBy=postadmin

Ответы [ 4 ]

2 голосов
/ 30 мая 2011

Ну, вы должны использовать Method="GET", если вы хотите позвонить в ваш сервис, как это. Кроме того, определение имени метода и аргументов, похоже, не соответствует вашей строке запроса.

Если вы хотите использовать глагол POST, вам нужно отправить запрос POST, и вы не сможете вызвать службу, напрямую набрав URL в браузере.

1 голос
/ 22 августа 2012

нужно добавить в web.config

1

<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="WcfRest.IService1"/>

2

<bindings>
      <customBinding>
        <binding name="basicConfig">
          <binaryMessageEncoding/>
          <httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
        </binding>
      </customBinding>
    </bindings>
0 голосов
/ 09 февраля 2012

Вы вызываете свою службу из javascript в браузере?

Находится ли html-страница в том же домене, что и служба wcf?

Если они не совпадаютдомен , тогда я бы сказал, что это проблема межсайтовый скриптинг .Я верю, что GET разрешен кросс-сайтов, но POST нет.http://en.wikipedia.org/wiki/JSONP было бы решением, если бы оно поддерживалось на стороне сервера (WCF)

0 голосов
/ 30 мая 2011

Измените свой метод в интерфейсе как

public class InputClass
{


public string Name{get;set;}
public string CreatedBy{get;set}
}

    [OperationContract]
     [WebInvoke(
     UriTemplate = "PostUserData" , 
     Method="POST",
    BodyStyle = WebMessageBodyStyle.WrappedRequest,
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat = WebMessageFormat.Json))]
     void PostUserData(InputClass input);

См. Ссылку для получения дополнительной информации. http://fszlin.dymetis.com/post/2010/05/10/Comsuming-WCF-Services-With-Android.aspx

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