标签: wcf-binding

如何在IIS中仅使用WCF进行basichttpbinding,SSL和基本身份验证?

是否可以仅使用BasicHttpBinding绑定在IIS中使用SSL和基本身份验证设置WCF服务?(我不能使用wsHttpBinding绑定)

该站点托管在IIS 7上,并设置了以下身份验证:

   - Anonymous access: off
   - Basic authentication: on
   - Integrated Windows authentication: off !!
Run Code Online (Sandbox Code Playgroud)

服务配置:

<services>
  <service name="NameSpace.SomeService">
    <host>
      <baseAddresses>
        <add baseAddress="https://hostname/SomeService/" />
      </baseAddresses>

    </host>
    <!-- Service Endpoints -->
    <endpoint address="" binding="basicHttpBinding"
              bindingNamespace="http://hostname/SomeMethodName/1"
              contract="NameSpace.ISomeInterfaceService"
              name="Default"
                      />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging …
Run Code Online (Sandbox Code Playgroud)

ssl wcf basichttpbinding wcf-binding wcf-security

19
推荐指数
1
解决办法
5万
查看次数

如何使用此WCF联系人将receiveTimeout和sendTimeout设置为无穷大?

我的主机中有以下app.config:

<services>
  <service name="DCC_Service.DCCService" behaviorConfiguration="serviceBehavior">
    <endpoint binding="netNamedPipeBinding" contract="DCC_Service.IDCCService" address="DCCService" />
    <endpoint binding="mexNamedPipeBinding" contract="IMetadataExchange" address="mex" />
    <host>
      <baseAddresses>
        <add baseAddress="net.pipe://localhost/"/>
      </baseAddresses>
    </host>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="serviceBehavior">
      <serviceMetadata httpGetEnabled="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)

如何将netNamedPipeBinding超时设置为无限又名Timespan.MaxValue

wcf wcf-binding

18
推荐指数
3
解决办法
3万
查看次数

WCF错误:'证书'我的证书'可能没有能够进行密钥交换的私钥

我有一个WCF服务,我试图在我们的生产Web服务器(IIS6)上托管.我已经设置了网络并将我们的证书绑定到网络上.当我尝试浏览服务URL时,我在事件日志中收到以下错误:

异常消息是:证书'CN = .mydomain,OU = Secure Link SSL Wildcard,OU = IT,C = US'可能没有能够进行密钥交换的私钥,或者该进程可能无法访问私钥的权利.有关详细信息,请参阅内部异常.. ---> System.ArgumentException:证书'CN = .mydomain.com,OU =安全链接SSL通配符,OU = IT,O = mydomain,C = US'可能不会具有能够进行密钥交换的私钥,或者该进程可能没有私钥的访问权限.详情请见内部异常.---> System.Security.Cryptography.CryptographicException:句柄无效.

我已经确认ASP.Net 1.1,2和4都在'Web服务扩展'中设置为'允许'.我还确认证书已在iis中设置,并显示"您有一个与此证书相对应的私钥".此外,执行权限设置为"脚本和可执行文件".

c# iis wcf wcf-binding wcf-security

18
推荐指数
1
解决办法
2万
查看次数

在WCF服务中使用protobuf

我的asp.net网页位于IIS Web服务器上,它使用基本HTTP绑定与WCF服务(位于Windows 2008 app服务器上)进行通信.我的wcf服务的性能似乎并不那么好,我想改进它.同样,我需要在可扩展性上保持平衡,因为我的网站将拥有非常高的流量.

HTTP压缩,限制是一些我知道但尚未尝试过的方法..我可以使用protobuf API ...请建议......

wcf web-services wcf-binding

17
推荐指数
1
解决办法
8801
查看次数

netTcpBinding或wsHttpBinding

我有一个托管为Windows服务的WCF服务,客户端是一个使用WCF服务方法的ASP.Net应用程序.

在实施安全性的过程中,我很困惑哪个netTcpBinding/ 哪个wsHttpBinding适合我的情况.

很可能场景中的所有应用程序(WCF服务,Windows服务,ASP.Net网站)都将位于我们办公室的不同服务器上,因此位于Intranet中.用户可以通过Internet访问ASP.Net网站.

虽然,我总是可以在这里使用wsHttpBinding,它是否适合netTcpBinding在我的情况下设置服务端点?

wcf wcf-binding wshttpbinding nettcpbinding

17
推荐指数
4
解决办法
2万
查看次数

WCF maxReceivedMessageSize未从配置中读取

我有一个WCF服务的以下服务器端app.config:

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="default" maxReceivedMessageSize="5000000">
          <readerQuotas maxStringContentLength="5000000" maxArrayLength="5000000" />
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="Core.TOAService.Service1Behavior"
        name="Core.TOAService.TOAService">
        <endpoint address="" binding="wsHttpBinding" contract="Core.TOAService.ITOAService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/Core.TOAService/TOAService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Core.TOAService.Service1Behavior">
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set …
Run Code Online (Sandbox Code Playgroud)

wcf wcf-binding

16
推荐指数
2
解决办法
3万
查看次数

如果我设置HttpGetEnabled = false会发生什么

我对元数据发布概念感到困惑.

如果在WCF服务配置文件中我写了:

  <serviceMetadata httpGetEnabled="false"/>
Run Code Online (Sandbox Code Playgroud)

无论是真是假.当我尝试使用"添加服务引用..."在客户端应用程序中提供服务引用并单击"发现"时,我能够检索服务引用.

但删除以下两行: -

<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/>

<serviceMetadata httpGetEnabled="false"/>
Run Code Online (Sandbox Code Playgroud)

如今后,当我试图给使用客户端应用程序引用"添加服务引用...",并点击"查看",我能够检索服务参考.

现在任何人都可以告诉我它究竟意味着什么.为什么在将其设置为False之后仍然允许设置参考.为什么在删除这些行之后它不允许设置引用.

-Anil

.net wcf binding metadata wcf-binding

16
推荐指数
2
解决办法
2万
查看次数

ServiceReferences.ClientConfig中的动态端点

构建应用程序时,它通常部署在不同的环境(test,dev,prod)中,因此端点地址正在发生变化.由于ServiceReferences.ClientConfig是作为Silverlight的.xap文件的一部分构建的,因此在构建解决方案后很难更改端点,这通常是通过web.config完成的.

我已经搜索了很多,但是我无法弄清楚这里的最佳做法是什么,所以我的问题是:

在Silverlight中进行动态wcf端点地址配置时,最佳做法是什么?

为了澄清,根据应用程序所在的服务器(test,dev,prod),端点会发生变化:

  <endpoint
    name="MyService"
    address="http://testserv/MyService.svc"
    binding="basicHttpBinding"
    bindingConfiguration="MybasicHttpBinding"
    contract="MyApp.MyService"
             />

  <endpoint
    name="MyService"
    address="http://prodserv/MyService.svc"
    binding="basicHttpBinding"
    bindingConfiguration="MybasicHttpBinding"
    contract="MyApp.MyService"
             />
Run Code Online (Sandbox Code Playgroud)

在某种程度上,我需要Silverlight客户端知道使用哪一个,具体取决于它在哪个服务器上/哪个构建编译.

c# silverlight wcf-binding

16
推荐指数
2
解决办法
1万
查看次数

如何通过WCF流​​传输MemoryStream

我打算通过WCF Streaming传递MemoryStream,但似乎没有用,但是当我稍微更改代码以传递FileStream时,它正在工作.实际上,我的目的是传递大量业务对象(可序列化).我正在使用basicHttpBinding.非常感谢您的建议!

编辑:问题的症状是传入的流是空的.没有错误也没有例外.

c# wcf wcf-binding

16
推荐指数
1
解决办法
1万
查看次数

Azure Service Bus Relay - 启用压缩

我们在使用有速度问题Azure的服务总线中继netTcpRelayBindingbasicHttpRelayBinding.对于小消息大小(10K),中继以低延迟(100ms)运行,但随着消息大小增加(100K),我们经历看似随机的响应时间(600ms-1000ms).我们希望改善较大邮件的延迟成本.

是否正在使用通过服务总线中继支持的消息压缩(gzip,protobuf-net)?有没有人通过中继启用请求/响应压缩成功?通过IIS支持响应压缩微不足道的,但我们希望支持请求压缩以提高延迟成本.由于我们无法用Fiddler来描述中继,我们如何知道消息在通过中继时仍然被压缩?


我们发现一个有趣的观点是,在后续消息中继(2s)之间引入延迟,我们可以获得更好的性能(100K - 200ms).可能是更大的消息被自动限制?知道触发限制条件的消息大小截止值会很高兴.

对于我们的测试 - 我们只是向服务中继发送一个随机消息字符串,并从服务器回送请求字符串.我们尝试了来自多个地理位置的此客户端/服务器(以排除防火墙/ Web过滤器问题)并遇到相同的延迟行为.

服务器端

public class ServiceRelayProfiler : IServiceRelayProfiler
{
    public string HelloProfiler(string name)
    {
        return string.Format("Hello {0}", name);
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端

ChannelFactory<IServiceRelayProfiler> channelFactory = new ChannelFactory<IServiceRelayProfiler>("helloProfilerTcp");
IServiceRelayProfiler channel = channelFactory.CreateChannel();
string message = RandomString(100000); // 100K
for (int i = …
Run Code Online (Sandbox Code Playgroud)

c# wcf wcf-binding azure azureservicebus

16
推荐指数
1
解决办法
1459
查看次数