是否可以仅使用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) 我的主机中有以下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服务,我试图在我们的生产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中设置,并显示"您有一个与此证书相对应的私钥".此外,执行权限设置为"脚本和可执行文件".
我的asp.net网页位于IIS Web服务器上,它使用基本HTTP绑定与WCF服务(位于Windows 2008 app服务器上)进行通信.我的wcf服务的性能似乎并不那么好,我想改进它.同样,我需要在可扩展性上保持平衡,因为我的网站将拥有非常高的流量.
HTTP压缩,限制是一些我知道但尚未尝试过的方法..我可以使用protobuf API ...请建议......
我有一个托管为Windows服务的WCF服务,客户端是一个使用WCF服务方法的ASP.Net应用程序.
在实施安全性的过程中,我很困惑哪个netTcpBinding/ 哪个wsHttpBinding适合我的情况.
很可能场景中的所有应用程序(WCF服务,Windows服务,ASP.Net网站)都将位于我们办公室的不同服务器上,因此位于Intranet中.用户可以通过Internet访问ASP.Net网站.
虽然,我总是可以在这里使用wsHttpBinding,它是否适合netTcpBinding在我的情况下设置服务端点?
我有一个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服务配置文件中我写了:
<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
构建应用程序时,它通常部署在不同的环境(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客户端知道使用哪一个,具体取决于它在哪个服务器上/哪个构建编译.
我打算通过WCF Streaming传递MemoryStream,但似乎没有用,但是当我稍微更改代码以传递FileStream时,它正在工作.实际上,我的目的是传递大量业务对象(可序列化).我正在使用basicHttpBinding.非常感谢您的建议!
编辑:问题的症状是传入的流是空的.没有错误也没有例外.
我们在使用有速度问题Azure的服务总线中继既netTcpRelayBinding和basicHttpRelayBinding.对于小消息大小(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) wcf-binding ×10
wcf ×9
c# ×4
wcf-security ×2
.net ×1
azure ×1
binding ×1
iis ×1
metadata ×1
silverlight ×1
ssl ×1
web-services ×1