2011-05-30 72 views
2

您好以下是操作合同,其中im trring插入一些數據,所以即時通訊使用WebInvoke POST方法,但當我調用此方法它給我一個錯誤,說「方法不允許」方法不允許錯誤,同時使用wcf webinvoke後

我必須更改任何配置設置以允許在web.config中進行POST調用嗎?

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

和IM叫我的服務如下

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

+0

如何你打電話給方法嗎? – 2011-05-30 07:56:18

回答

2

那麼你應該使用Method="GET",如果你想打電話給你的服務是這樣的。此外,方法名稱和參數的定義似乎與您的查詢字符串不匹配。

如果你想使用POST動詞,那麼你需要發送一個POST請求,你將無法直接在瀏覽器中輸入url來調用服務。

+5

不!獲取操作不應修改數據。他們應該是冪等的。 – 2011-05-30 08:00:10

+0

@Ladislav Mrnka,這是正確的,我沒有注意到他正在嘗試修改數據。 – 2011-05-30 08:01:51

+0

「,您將無法通過在瀏覽器中直接輸入網址來調用該服務」 - 這只是爲我節省了一堆時間!謝謝!!! – 2013-05-13 10:16:48

0

你是否在瀏覽器中用JavaScript調用你的服務?

html頁面是否與wcf服務位於同一個域中?

如果他們不在同一個域中,那麼我會說,這是一個跨站點腳本問題。我相信GET是允許跨站點的,但POST不是。 http://en.wikipedia.org/wiki/JSONP將是一個解決方案,如果支持服務器端(通過WCF)

1

你需要在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>