2011-05-15 67 views
8

我试图在WCF服务中使用二进制消息编码,遵循本网站上的许多示例。无法激活服务器上的二进制http绑定

在我已在绑定声明为使服务器:

<customBinding> 
    <binding name="binaryHttpBinding"> 
     <binaryMessageEncoding maxReadPoolSize="4096000" maxSessionSize="4096000" maxWritePoolSize="4096000"> 
      <readerQuotas maxDepth="32" maxStringContentLength="4096000" 
      maxArrayLength="4096000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binaryMessageEncoding> 
     <httpTransport maxBufferPoolSize="4096000" maxBufferSize="4096000" maxReceivedMessageSize="4096000"/> 
    </binding> 
</customBinding> 

该服务被设置为使用它(我认为):

<service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.ContentUploadService"> 
    <endpoint 
     address="" 
     binding="customBinding" 
     bindingConfiguration="binaryHttpBinding" 
     contract="MyService.IContentUpload" 
     name="MyService.ContentUploadService" /> 

客户端具有相同的声明:

<customBinding> 
    <binding name="binaryHttpBinding"> 
     <binaryMessageEncoding maxReadPoolSize="4096000" maxSessionSize="4096000" maxWritePoolSize="4096000"> 
      <readerQuotas maxDepth="32" maxStringContentLength="4096000" 
      maxArrayLength="4096000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binaryMessageEncoding> 
     <httpTransport maxBufferPoolSize="4096000" maxBufferSize="4096000" maxReceivedMessageSize="4096000"/> 
    </binding> 
</customBinding> 

And:

<endpoint 
    address="http://foo.com/ContentUploadService.svc" 
    binding="customBinding" 
    bindingConfiguration="binaryHttpBinding" 
    contract="MyService.IContentUpload" 
    name="MyService.ContentUploadService"/> 

客户似乎是工作,但服务器抛出一个异常,指示结合不到位:

内容类型application /肥皂+ msbin1 被送到服务期待 文/ XML;字符集= UTF-8。客户端 和服务绑定可能是 不匹配。

在日志文件中出现此错误之前,立即在尝试打开服务主机时引发此错误,这必定是原因。

配置评估上下文未找到 。

我试过这封邮件的搜索链接都没有帮助。那么,我缺少什么基本的东西?

+1

Web.config中的服务配置?您的服务器应用程序中是否引用了System.ServiceModel.dll? – 2011-05-15 19:48:21

+0

是的,是的。如果我将绑定更改为basicHttpBinding(只要邮件大小保持<64K),服务就可以正常工作。 – David 2011-05-15 20:25:49

+0

如果您使用某些未注册为扩展名的未知绑定或行为配置,通常会触发“未找到配置评估上下文”。确保你的配置中没有类型。还要确保你的服务/ @名称是正确的 - 它必须是.svc文件中定义的Namespace.ServiceName。 – 2011-05-15 20:39:11

回答

1

您是否尝试过在服务器上设置主机来补充端点?

我认为这将是这样的:

<service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.ContentUploadService">  
<host> 
    <baseAddresses> 
     <add baseAddress="http://foo.com/ContentUploadService.svc"/> 
    </baseAddresses> 
</host> 
<endpoint address="" binding="customBinding" indingConfiguration="binaryHttpBinding" contract="MyService.IContentUpload" name="MyService.ContentUploadService" /> 

希望这是有益

1

它看起来对我来说,你的服务使用默认配置,如果不能找到一个明确这会发生组态。确保元素的name属性完全匹配服务类的完全限定名称(包含命名空间)。

相关问题