如何从.NET类库中调用WCF服务

时间:2010-10-29 15:35:54

标签: .net-2.0 wcf wcf-binding wcf-security class-library

我有一个内置于.NET 4.0的WCF Web服务,它配置为在每次调用时都需要用户名/密码,并在行为中使用服务器证书来加密请求。它目前使用wsHttpBinding。我有一个.NET 4实用程序应用程序,可以让我调用此WCF Web服务上的方法。

我需要从.NET 2.0类库中调用此服务。该库位于VS 2010中,但目标是.NET 2.0 - 我想简单地切换到.NET 4.0,但由于政治原因和时间限制而无法使用。因此,wsHttpBinding和现在使用的服务器证书是我迄今为止所读到的问题。

通过阅读点点滴滴,我做了以下几点:

  1. 更改了要使用的绑定 basicHttpBinding的
  2. 从行为中删除了对服务器证书的提及
  3. 已安装和 在类库上启用了WSE 项目
  4. 尝试在.NET 2.0 winforms app中使用WCF Web服务方法 - 史诗失败!!
  5. 我似乎如何在服务器端配置绑定并不重要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应用程序。

1 个答案:

答案 0 :(得分:0)

.NET 2.0 Framework不包含WCF(3.0中引入),所以我不知道如何轻松实现这一点。您可能不得不告诉政客们咬紧牙关并迁移到.NET 4.0。