我有一个silverlight应用程序,应用程序将wcf(SSL / https)连接到iis上托管的公共服务。如果我在浏览器中启动应用程序,一切正常。一旦我在“Out of Browser Mode”中启动应用程序,它就不再起作用了。我试图用fiddler弄清楚问题,但只要fiddler正在运行,一切正常。我在互联网上发现了很多这方面的帖子但没有任何效果有什么想法吗? fiddler究竟做了什么让它在oob中运行?
要点: 1.一切都好“在浏览器中” 2.运行“Out of Browser”时无法连接到公共服务 只要Fiddler正在运行,它就会在“Out of Browser”中运行
以下是我如何进行连接的一些信息。
非常感谢您的帮助。
祝你好运。 马克
以下是我如何做所有事情的一些信息:
自签名证书是否可能与所有人有关?
客户端与公共服务的连接如下所示:
PublicServiceClient proxy;
BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement();
HttpsTransportBindingElement httpsTransportBindingElement = new HttpsTransportBindingElement();
httpsTransportBindingElement.MaxBufferSize = int.MaxValue;
httpsTransportBindingElement.MaxReceivedMessageSize = int.MaxValue;
httpsTransportBindingElement.TransferMode = TransferMode.Buffered;
Binding binding = new CustomBinding(binaryMessageEncodingBindingElement, httpsTransportBindingElement);
binding.SendTimeout = new TimeSpan(0, 0, _WcfTimeout);
binding.ReceiveTimeout = new TimeSpan(0, 0, _WcfTimeout);
binding.OpenTimeout = new TimeSpan(0, 0, _WcfTimeout);
binding.CloseTimeout = new TimeSpan(0, 0, _WcfTimeout);
proxy = new PublicServiceClient(binding, new EndpointAddress("https://" + App.CurrentParameter.WcfDomain + "/PublicService.svc"));
绑定服务器端(web.config):
<binding name="Web.PublicService.customBinding0" sendTimeout="00:01:00" receiveTimeout="00:01:00" openTimeout="00:01:00" closeTimeout="00:01:00">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647">
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
</binaryMessageEncoding>
<httpsTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" keepAliveEnabled="false"/>
</binding>
服务服务器端(web.config):
<service name="Web.PublicService">
<endpoint address="" binding="customBinding" bindingConfiguration="Web.PublicService.customBinding0" contract="Web.PublicService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
答案 0 :(得分:0)
如果您在Fiddler中禁用HTTPS解密(并重新启动它)并且应用程序停止通过Fiddler工作,这意味着服务器上使用的自签名证书是问题,您需要通过信任该证书来修复它
如果在Fiddler中禁用HTTPS解密没有任何区别,则问题可能与安全区域设置有关。有关可能原因的详细信息,请参阅http://blogs.msdn.com/b/fiddler/archive/2010/11/22/fiddler-and-silverlight-cross-zone-cross-domain-requests.aspx。