我有一个内置于.NET 4.0的WCF Web服务,它配置为在每次调用时都需要用户名/密码,并在行为中使用服务器证书来加密请求。它目前使用wsHttpBinding。我有一个.NET 4实用程序应用程序,可以让我调用此WCF Web服务上的方法。
我需要从.NET 2.0类库中调用此服务。该库位于VS 2010中,但目标是.NET 2.0 - 我想简单地切换到.NET 4.0,但由于政治原因和时间限制而无法使用。因此,wsHttpBinding和现在使用的服务器证书是我迄今为止所读到的问题。
通过阅读点点滴滴,我做了以下几点:
我似乎如何在服务器端配置绑定并不重要HTTPS是不可接受的;唯一可以让它让我调用它的方法就是使用“无”的安全模式,grrrghhh!这当然允许我调用它,但之后没有提供用户名/密码的详细信息,也从未在WCF服务上设置,因此当它最终尝试保存时失败,因为用户ID为0。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false"/>
<services>
<service name="MyService.NameHere" behaviorConfiguration="NameOfMyConfigHere">
<endpoint binding="basicHttpBinding" bindingConfiguration="basicBinding" contract="DirectoryServices.IDirectorySubmitService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehaviourName">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="basicBinding" maxReceivedMessageSize="5242880">
<readerQuotas maxStringContentLength="5242880"/>
<security mode="None">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" />
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
如果有人能帮我找出正确的魔法傻瓜,我会非常感激。
我想要做的就是调用提供用户名/密码的WCF Web方法并让它使用SSL加密。该服务正在IIS上运行。客户端是一个winforms应用程序。
答案 0 :(得分:0)
.NET 2.0 Framework不包含WCF(3.0中引入),所以我不知道如何轻松实现这一点。您可能不得不告诉政客们咬紧牙关并迁移到.NET 4.0。