我目前正在将 WCF 数据服务(好吧,ADO.Net 数据服务)与实体框架一起使用,并且在执行 POST 时收到以下错误(省略/更改了一些不相关的信息):
<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="en-GB">The URI 'http://localhost:56568/MyWcfDataServices.svc/EntitySetName(pk_id)' is not valid for POST operation. For POST operations, the URI must refer to a service operation or an entity set.</m:message></m:error>
在网上浏览了一下,我似乎找不到关于这条消息的太多信息,所以调试它有点困难。这很可能会发生,因为我发布的属性之一是一个大的 base64 字符串(如果我不发布它就可以正常工作)。我尝试将其设置maxRequestLength
为以下内容:
<httpRuntime maxRequestLength="102400" />
但这似乎没有帮助。虽然我会继续解决这个问题,但我想我会在这里快速发布一个帖子,看看是否有人知道可能有帮助的东西。
我的 WCF 数据服务类如下所示:
public class MyWcfDataServices: DataService<ContextName>
{
public static void InitializeService(DataServiceConfiguration config)
{
// set entity access rules etc
}
}
谢谢
编辑:我似乎对此一无所获。这是我到目前为止所尝试的。
在服务器端,我设置了以下绑定:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
minFreeMemoryPercentageToActivateService="0" />
<services>
<service name="MyWcfDataServices"
behaviorConfiguration="myBehaviorConfig">
<endpoint address=""
binding="webHttpBinding"
bindingConfiguration=""
contract="System.Data.Services.IRequestHandler" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myBehaviorConfig">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
希望该maxItemsInObjectGraph
属性将是解决方案。这些绑定看起来正确吗?我是否遗漏了一些可以让我向服务器发布更多数据的属性?我是否也需要在客户端上配置此服务行为?