1

我被分配开发应该使用 WCF 服务的 silverlight 应用程序。该服务仅使用 WsHttpBinding 公开端点。

据我了解,在 silverlight 应用程序中无法使用此服务(WsHttpBinding 是否需要特殊的操作系统支持?)。

对服务的每次调用都有用户凭据作为其中的参数。

这是生成服务的配置如何查找 .Net 4 应用程序:

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IScheduleService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="blahblah/Service.svc/ws"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IScheduleService"
            contract="ScheduleService.IScheduleService" name="WSHttpBinding_IScheduleService">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

抱歉,介绍太长了,这里有个问题。

Silverlight 世界中保护与 WCF 服务的连接的常见方法是什么?如何更改服务,以供silverlight客户端使用?

4

1 回答 1

2

最常见的方法是使用传输安全 (ssl) - 就像您使用此设置一样。这里唯一的问题可能是 wshttpbinding 期望客户端 soap 消息包含 silverlight 可能不支持的 ws-addressing 标头(使用 fiddler 或 wcf 日志记录检查它)。

我会说 - 如果您能够将服务更改为 basicHttpBinding 它是最好的。否则,您仍然可以这样做,但您需要手动将标头推送到肥皂消息中。编写一个工作肥皂客户端(winforms)并查看它发送的肥皂的外观。然后使用silverlight 上的消息检查器添加它。

于 2012-05-21T09:30:27.217 回答