basichttpbinding和wshttpbinding是两个基于SOAP的绑定,与REST有很大的不同。 basichttpbinding和wshttpbinding的区别如下: basichttpbinding是非常基本的绑定-soap 1.1,在安全性方面不多,在功能方面不多,但与现有的任何SOAP
先从BasicHttpBinding谈起。 二、BasicHttpBinding支持的安全模式 下面的代码片断表示BasicHttpBinding安全相关应用编程接口的定义,这和上面给出的“泛型绑定”的定义完全一致。 通过Security属性返回用于进行针对BasicHttpBinding安全设置的类型为BasicHttpSecurity。 如下面的代码片断所示,我们为BasicHttpBinding设置了Transport安全模式,并将其客户端凭证设置成Windows。 举个例子,我通过如下一段代码对服务CalculatorService进行寄宿,并采用了一个采用Message模式的BasicHttpBinding。
maxNameTableCharCount="2147483647" /> </binding> <binding name="StandardInterfaceSoap11Binding" /> </basicHttpBinding sDataInfraceSoap2 在<client>节点中确认一下报错的调用匹配的是哪一个binding: <client> <endpoint address="http://aaa" binding="<em>basicHttpBinding</em> ServiceEtMobile.sDataInfraceSoap" name="sDataInfraceSoap" /> <endpoint address="http://bbb" binding="<em>basicHttpBinding</em> ServiceEtMobile2018.sDataInfraceSoap" name="sDataInfraceSoap1" /> <endpoint address="http://xxx" binding="<em>basicHttpBinding</em> ServiceEtMobile2.sDataInfraceSoap" name="sDataInfraceSoap2" /> <endpoint address="http://iii" binding="<em>basicHttpBinding</em>
> <binding name="<em>BasicHttpBinding</em>_IService" /> </basicHttpBinding> </bindings> ="BasicHttpBinding_IService" contract="IService" name="BasicHttpBinding_IService" /> </ 服务端配置 绑定配置如下,其他不变 <bindings> <basicHttpBinding> <binding name="<em>BasicHttpBinding</em>_IService 修改配置如下,可正常运行: 服务端 <bindings> <<em>basicHttpBinding</em>> <binding name="BasicHttpBinding_IService <bindings> <basicHttpBinding> <binding name="<em>BasicHttpBinding</em>_IService" maxBufferSize="
BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None No Yes TransportCredentialOnly Yes No No No No No 针对这个表格,我们可以看出: 所有的绑定都可以不采用任何的安全传输机制,即支持None安全模式; BasicHttpBinding BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None 因为除了BasicHttpBinding采用BasicHttpMessageCredentialType枚举表示其支持的客户端凭证类型之外,其它所有的绑定(不包括不支持Message安全模式的NetNamedPipeBinding BasicHttpBinding WSHttpBinding WSDualHttpBinding NetNamedPipeBinding NetTcpBinding NetMsmqBinding None
behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <bindings> <basicHttpBinding > <binding name="<em>BasicHttpBinding</em>_Default" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding </bindings> 2、客户端传数据给服务端报错 修改服务端web.config <system.serviceModel> <bindings> <basicHttpBinding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> </binding > </basicHttpBinding
Simplest scenario: single service, single endpoint, basicHttpBinding, all defaults Service config: <system.serviceModel address="http://YourServer/SomeVirtualDirectory/YourService.svc" binding="<em>basicHttpBinding</em> > <binding name="ExtendedTimeout" receiveTimeout="00:05:00" /> </basicHttpBinding " address="http://YourServer/SomeVirtualDirectory/YourService.svc" binding="basicHttpBinding > <binding name="ExtendedTimeout" sendTimeout="00:05:00" /> </basicHttpBinding
CompanyService" behaviorConfiguration="mexBehavior"> <endpoint address="CompanyService" binding="<em>basicHttpBinding</em> <system.serviceModel> <bindings> <<em>basicHttpBinding</em>> <binding name ="BasicHttpBinding_ICompanyPublicService" /> </basicHttpBinding> <netTcpBinding " bindingConfiguration="<em>BasicHttpBinding</em>_ICompanyPublicService" contract ="CompanyService.ICompanyPublicService" name="<em>BasicHttpBinding</em>_ICompanyPublicService" />
> <binding name="<em>BasicHttpBinding</em>_IService" /> </basicHttpBinding> </bindings> ="BasicHttpBinding_IService" contract="IService" name="BasicHttpBinding_IService" /> </ <system.serviceModel> <bindings> <basicHttpBinding> <binding name="<em>BasicHttpBinding</em>_IService " sendTimeout="00:10:00"/> </basicHttpBinding> </bindings> <client> <endpoint address ="http://localhost/S" binding="<em>basicHttpBinding</em>" bindingConfiguration="<em>BasicHttpBinding</em>_IService
basicHttpBinding等预定义的绑定一般具有MaxReceivedMessageSize属性,CustomBinding则需要在Transport中定义。 httpTransport maxReceivedMessageSize="2147483647"> </httpTransport> </binding> </customBinding> <basicHttpBinding > <binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding> </basicHttpBinding
maxArrayLength="2147483647"/> <security mode="None"></security> </binding> </basicHttpBinding > <binding name="<em>BasicHttpBinding</em>_HelloWorld" maxBufferSize="2147483647" maxReceivedMessageSize ="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> --下面这个节点是关键--> <customBinding> <binding name="<em>BasicHttpBinding</em>_HelloWorld"> < " bindingConfiguration="<em>BasicHttpBinding</em>_HelloWorld" contract="WCF.HelloWorld" name="<em>BasicHttpBinding</em>_HelloWorld
解决办法: 在该服务对面的binding节点添加attribute <bindings> <basicHttpBinding> <binding name="<em>BasicHttpBinding</em>_IMyService " maxReceivedMessageSize="2147483647"/> </basicHttpBinding> </bindings>
expose the service in two different endpoints. the SOAP one can use the binding that support SOAP e.g. basicHttpBinding in your scenario is <services> <service name="TestService"> <endpoint address="soap" binding="<em>basicHttpBinding</em> behavior> Endpoints <services> <service name="TestService"> <endpoint address="soap" binding="<em>basicHttpBinding</em> adding the service reference, <client> <endpoint address="http://www.example.com/soap" binding="<em>basicHttpBinding</em> " contract="ITestService" name="<em>BasicHttpBinding</em>_ITestService" /> </client> in C# TestServiceClient
name="MyWindowsService.MyWcfService"> <endpoint address="" binding="<em>basicHttpBinding</em> <transport clientCredentialType="None" /> </security> </binding> </basicHttpBinding </serviceBehaviors> </behaviors> <protocolMapping> <add scheme="https" binding="<em>basicHttpBinding</em> services> <service name="MyWindowsService.MyWcfService"> <endpoint address="" binding="<em>basicHttpBinding</em> </serviceBehaviors> </behaviors> <protocolMapping> <add scheme="https" binding="<em>basicHttpBinding</em>
> <binding name="<em>BasicHttpBinding</em>_CalculatorService" /> </basicHttpBinding> </bindings > <client> <endpoint address="http://localhost:8081/Wcf" binding="<em>basicHttpBinding</em>" bindingConfiguration="<em>BasicHttpBinding</em>_CalculatorService" contract="WcfServiceContracts.IAdd " name="AddService1" /> <endpoint address="http://localhost:8082/Wcf" binding="<em>basicHttpBinding</em> " name="AddService2" /> <endpoint address="http://localhost:8083/Wcf" binding="<em>basicHttpBinding</em>
示例代码片段: BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress 三、错误代码示例 以下是一个可能导致该报错的代码示例,并解释其错误之处: BasicHttpBinding binding = new BasicHttpBinding(); // 错误的地址配置 EndpointAddress 以下是正确的代码示例: BasicHttpBinding binding = new BasicHttpBinding(); // 正确的地址配置 EndpointAddress address = new
> <binding name="<em>BasicHttpBinding</em>_CalculatorService" /> </basicHttpBinding> </bindings > <client> <endpoint address="http://localhost:8081/Wcf" binding="<em>basicHttpBinding</em>" bindingConfiguration="<em>BasicHttpBinding</em>_CalculatorService" contract="WcfServiceContracts.IAdd " name="AddService1" /> <endpoint address="http://localhost:8082/Wcf" binding="<em>basicHttpBinding</em> " name="AddService2" /> <endpoint address="http://localhost:8083/Wcf" binding="<em>basicHttpBinding</em>
目录 一、BasicHttpBinding 二、WSHttpBinding、WS2007HttpBinding和WSDualHttpBinding 三、 我们先来看看对于三种典型安全模式(Transport、Message和Mixed)下的BasicHttpBinding具体由哪些绑定元素构成,为了我编写了如下的程序。 1: BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); 2: Console.WriteLine 从名称就可以看出来,这是一个基于HTTPS的传输绑定元素,这也再次印证了BasicHttpBinding通过HTTPS实现Transport安全模式的说法。 不论是BasicHttpBinding还是WSHttpBinding、WS2007HttpBinding和WSDualHttpBinding,当绑定的安全模式确定之后,绑定元素集合就确定了。
同时Web.config也发生了改变,多了下面这些代码: <system.serviceModel> <bindings> <basicHttpBinding> <binding name="<em>BasicHttpBinding</em>_IService1" /> </basicHttpBinding> bindings> <client> <endpoint address="http://localhost:54875/Service1.svc" binding="<em>basicHttpBinding</em> " bindingConfiguration="<em>BasicHttpBinding</em>_IService1" contract="ServiceReference1.IService1 " name="<em>BasicHttpBinding</em>_IService1" /> </client> </system.serviceModel>
ServiceHost(serviceType, new Uri[] { httpAddress, tcpAddress })) { //定义一个basicHttpBinding ,地址为空 Binding basicHttpBinding = new BasicHttpBinding(); string address //用上面定义的binding和address,创建endpoint host.AddServiceEndpoint(typeof(Server.IData), basicHttpBinding void Main(string[] args) { //定义绑定与服务地址 Binding httpBinding = new BasicHttpBinding