WCF - 没有端点侦听

时间:2012-10-01 14:14:07

标签: wcf endpoint endpoint-address

我的一个WCF服务有一个操作合同,将大型文件作为参数。所以,当客户端尝试发送它时,我得到了一个异常,当我查看服务器跟踪时,这就是我所看到的:

  

MESSAGE:传入邮件的最大邮件大小配额(65536)   已超出。要增加配额,请使用   相应绑定元素上的MaxReceivedMessageSize属性。

我使用的是我的WCF服务的默认简化配置,因此添加了一个新的服务定义,如下所示:

<system.serviceModel>
<services>
  <service name="MyNamespace.MyService">
    <endpoint address="MyService.svc"
      binding="basicHttpBinding" bindingConfiguration="basicHttp"
      contract="MyNamespace.IMyService" />
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="basicHttp" allowCookies="true"
             maxReceivedMessageSize="10485760"
             maxBufferSize="10485760"
             maxBufferPoolSize="10485760">
      <readerQuotas maxDepth="32"
           maxArrayLength="10485760"
           maxStringContentLength="10485760"/>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  ...
</behaviors>
<protocolMapping>
    ...
</protocolMapping>    

我使用我的服务的方式是,我有一个函数在我的帮助器类中返回一个通道,我使用该通道调用操作:

public static T CreateChannel<T>() where T : IBaseService
{
    System.ServiceModel.BasicHttpBinding binding= new System.ServiceModel.BasicHttpBinding();

    binding.TransferMode = TransferMode.Streamed;
    binding.Security = new BasicHttpSecurity() { Mode = BasicHttpSecurityMode.None };
    binding.MaxReceivedMessageSize = 10485760;
    binding.MaxBufferSize = 10485760;

    System.ServiceModel.ChannelFactory<T> cf2 = new ChannelFactory<T>(binding, 
             new System.ServiceModel.EndpointAddress(MyEndpointAddress)); //I checked this part, the address is correct.
    T Channel= cf2.CreateChannel();
    return Channel;
}

然后,

var businessObject = WcfHelper.CreateChannel<IMyService>();
var operationResult = await businessObject.MyOperationAsync(...);

即使我的其他服务运行正常,我在配置中定义的服务显式返回“没有端点监听...”的例外我在VS2012上开发,使用IISExpress 。可能是什么问题,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为转会模式不匹配。在客户端,您正在使用流传输,而在服务器端,它不在配置中。另外,你指定了10MB,这不是很高。

有关流式传输的更多信息,请访问this

修改:

如果您在IIS下托管,请同时检查(默认为4Mb):

<system.web>    
    <httpRuntime maxRequestLength="4096 " />
</system.web>