方法在使用wcf webinvoke post时不允许出现错误
下面是操作契约,在这里我尝试插入一些数据,所以我使用WebInvoke POST方法,但是当我调用这个方法时,它给我一个错误,说“方法不允许” 我是否必须更改允许在web.config中进行POST调用的任何配置设置方法在使用wcf webinvoke post时不允许出现错误,wcf,Wcf,下面是操作契约,在这里我尝试插入一些数据,所以我使用WebInvoke POST方法,但是当我调用这个方法时,它给我一个错误,说“方法不允许” 我是否必须更改允许在web.config中进行POST调用的任何配置设置 [OperationContract] [WebInvoke( UriTemplate = "/Album/PostData?name={name}&CrBy={createdBy}" , Method="POST")] void PostUserData(st
[OperationContract]
[WebInvoke(
UriTemplate = "/Album/PostData?name={name}&CrBy={createdBy}" ,
Method="POST")]
void PostUserData(string name, string createdBy);
我打电话给我的服务,如下所示
如果你想这样呼叫你的服务,你应该使用
Method=“GET”
。此外,方法名和参数的定义似乎与查询字符串不匹配
如果要使用POST动词,则需要发送POST请求,并且无法通过在浏览器中直接键入url来调用服务。将界面中的方法更改为
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);
有关更多信息,请参阅链接。您是否通过浏览器中的javascript调用您的服务 html页面是否与wcf服务位于同一域中
如果它们不在同一个域中,那么我会说这是一个跨站点脚本问题。我相信GET是允许跨站点的,但POST是不允许的。如果服务器端(由WCF)支持,这将是一个解决方案。您需要添加到web.config中 一,
二,
不!Get操作不应修改数据。它们应该是幂等的。@Ladislav Mrnka,没错,我没有注意到他正在试图修改数据。“而且你将无法通过在浏览器中直接键入url来调用服务”-这为我节省了很多时间!!!谢谢
<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="WcfRest.IService1"/>
<bindings>
<customBinding>
<binding name="basicConfig">
<binaryMessageEncoding/>
<httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
</binding>
</customBinding>
</bindings>