在这里,当我尝试发送字节数组时,它给了我错误的请求错误。 我已检查所有邮件限制的最大值。 全部设置为最大值。 但是我能够通过将字节数组参数保持为null来将字符串值发送到服务方法。 我不知道为什么会在这里发生。 我还检查了服务行为配置名称和绑定配置名称(即,包含的名称空间),似乎还不错。我们非常感谢您的帮助。

这是我的客户端代码:

....
ServiceClient ac = new ServiceClient();
string ServiceUrl = "http://localhost:20314/Service.svc";
EndpointAddress address = new EndpointAddress(ServiceUrl);
BasicHttpBinding httpbinding = new BasicHttpBinding();   
using (ChannelFactory<IServiceChannel> factory = new   ChannelFactory<IServiceChannel>(httpbinding))
{
    factory.Endpoint.Address = address;
    using (IServiceChannel oService = factory.CreateChannel())
    {

       using (OperationContextScope scope = new OperationContextScope(oService))
       {

         Guid myToken = new Guid("guid here");                      

         MessageHeader<Guid> mhg = new MessageHeader<Guid>(myToken);                       
         MessageHeader untyped = mhg.GetUntypedHeader("identity", "ns");
         OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
         // here i am getting bad request error                                                               
         var fdt = (oService).GetData(bytearray, value);

         }
    }
}
.......

客户端Web配置:

<system.web>
<compilation debug="true" targetFramework="4.0"/>     
<httpRuntime maxRequestLength="500000000" executionTimeout="360"/> 
</system.web>  
<system.serviceModel>
<bindings>
  <basicHttpBinding>        
    <binding name="BasicHttpBinding_IService" closeTimeout="01:01:00"
      openTimeout="01:01:00" receiveTimeout="01:10:00" sendTimeout="01:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
        maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

<client>      
  <endpoint address="http://localhost:20314/Service.svc" binding="basicHttpBinding"
    bindingConfiguration="BasicHttpBinding_IService" contract="LocalService.IService"
    name="BasicHttpBinding_IService"/> 
</client>

<services>      
  <service name="LocalService.Service" behaviorConfiguration="ServiceBehavior">
    <endpoint address="http://localhost:20314/Service.svc" binding="wsHttpBinding" contract="LocalService.IService" />
  </service>
</services>

<behaviors>
  <serviceBehaviors>        
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

服务网络配置

<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime maxRequestLength="500000000" executionTimeout="360"/>
</system.web>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true" />
</system.webServer>  
<system.serviceModel>    
<behaviors>
  <serviceBehaviors>
    <behavior>          
      <serviceAuthorization serviceAuthorizationManagerType="ServiceApp.APIKeyAuthorization, ServiceApp" />
      <serviceMetadata httpGetEnabled="true" />
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
      <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint
      automaticFormatSelectionEnabled="true"
      helpEnabled="true" />
  </webHttpEndpoint>
</standardEndpoints>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="false"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

===============>>#1 票数:1 已采纳

我在您的配置文件中看到了几件事。

首先,在客户端配置中,有一个<services>部分-除非您的客户端也托管服务,否则您不需要那里。 另外,您的<services>部分使用wsHttpBinding ,但是您的客户端指定了basicHttpBinding客户端和服务绑定需要匹配。

其次,您在客户端上设置了更高的绑定值,但是客户端绑定配置对服务器端无效。 您没有在服务配置中定义显式终结点,因此您将获得具有默认绑定( basicHttpBinding )的默认终结点,该默认绑定具有正常的默认值。

您可以在服务配置中添加basicHttpBinding的默认配置(通过省略name属性),如下所示:

<bindings>
  <basicHttpBinding>        
    <binding closeTimeout="01:01:00"
             openTimeout="01:01:00" receiveTimeout="01:10:00" sendTimeout="01:01:00"
             allowCookies="false" bypassProxyOnLocal="false" 
             hostNameComparisonMode="StrongWildcard"
             maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
             maxReceivedMessageSize="2147483647"
             messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
             useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647"
                    maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
                   realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

这是来自client.config的相同定义,减去name属性。 (此外,为什么要定义传输和邮件安全性,但安全模式设置为“无”?)

另一个选择是在服务配置中显式定义一个端点,并指定要使用的绑定配置。 类似于您在客户端配置文件中所做的。 让我们假设你有一个basicHttpBinding名为“BasicHttpBinding_IService”。 您的端点看起来像这样:

<services>      
  <service name="LocalService.Service" behaviorConfiguration="ServiceBehavior">
    <endpoint address="http://localhost:20314/Service.svc" 
              binding="basicHttpBinding" 
              bindingConfiguration="BasicHttpBinding_IService"
              contract="LocalService.IService" />
  </service>
</services>

  ask by sainath sagar translate from so

未解决问题?本站智能推荐:

1回复

将复杂对象传递给wcf

将自定义对象传递给REST WCF操作会给我“错误的请求错误”。 我在这里尝试了uri路径和查询字符串类型方法。任何帮助将不胜感激。 服务端代码 客户端代码: 服务配置
1回复

WCF服务器拒绝来自本地主机的连接

我在计算机上运行的宿主应用程序内的net.tcp端口上运行了WCF服务-Windows 2003 64位。 该应用程序将接受来自同事计算机的连接以及来自WCF测试客户端的本地连接,并发送回适当的信息。 我还可以使用客户端连接到同事计算机上运行的服务。 不幸的是,它不允许我从计算机上
1回复

WCF SOAP和REST一起使用

可以说我有WCF Soap Services,并且正在使用该库作为SOAP标头 http://wcfextras.codeplex.com/ 例如我的界面看起来像这样 在Header类中,我具有basicHttpbinding的用户名和密码。 现在,我想对REST服务使用此
2回复

WCF错误仅使用wsHttpBinding发送到SOAP 1.1时,SOAP 1.2消息无效

我正在尝试使用我无法控制的服务,而仅获得了要使用的WSDL。 该服务需要用于认证的证书。 我对证书的配置很好,尝试按如下所示调用服务时出现错误: 响应消息的内容类型text / xml; charset = UTF-8与绑定的内容类型不匹配(application / soap +
1回复

使用用户名和密码肥皂请求的WCF身份验证

我想使用用户名和密码对WCF服务上的请求进行身份验证,接收到的请求肥皂标头将是这样,我应该配置wcf服务以在数据库中检查此用户名和密码。
1回复

是否可以从SOAP信封中确定WCF绑定配置?

我从WSDL文件生成了一个WCF客户端服务代理,该文件调用第三方java Web服务。 现在我需要配置绑定和代理来调用Web方法。 但是,我只有以下SOAP信息,用户名和密码以及客户端证书。 我怎样才能弄清楚我需要做什么? 是否存在“反向此配置”应用程序或教授所需技能的网站?
2回复

在WCF客户端中加密/解密肥皂主体

我在IIS中托管了WCF服务。 该服务被强制为basicHttpBinding 。 WCF服务之前有IBM DataPower,可以将其公开。 我正在编写一个WCF客户端应用程序(从ClientBase继承),该应用程序必须使用预共享的公用密钥来加密消息主体,DataPower会对其解
1回复

WCF:如何使用AllowInsecureTransport

在.NET 4 WCF的上下文中,我尝试使用新的AllowInsecureTransport属性,以便我可以在不使用SSL的情况下使用自定义身份验证(仅在我们的开发环境中 - 我们在生产中使用SSL)。 我的绑定配置看起来像: 但是,我收到一个无法识别的属性'allowInsecu
1回复

寻找WCF解决方案以使用自定义绑定在负载平衡的环境中传递用户凭据

当前,我们支持在负载平衡环境中运行的几种WCF服务。 在过去,我们使用的wsHttpBinding并设置establishSecurityContext为false,以使服务能够与我们的负载均衡器正常工作。 我们遇到的一个问题是,默认情况下, wsHttpBinding会对返回结果进行加
1回复

使用WCF进行模拟

我试图通过WCF Web服务公开使用用户凭据访问SQL Server(通过实体框架)的功能(由于审计触发器等,这是客户端/ dba的要求。放弃尝试说服用户不要使用用户凭据) 我无法让WCF实施模拟。 (实际上是一场噩梦)。 我已经添加了 归因于我的合同。 但是随后,它抱怨Ba