【问题标题】:How to call WCF service from .NET class library如何从 .NET 类库调用 WCF 服务
【发布时间】:2010-10-29 15:35:53
【问题描述】:

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

我需要从 .NET 2.0 类库中调用此服务。该库位于 VS 2010 中,但针对 .NET 2.0 - 我想简单地切换到 .NET 4.0,但由于政治原因和时间限制不能。因此,从我目前所读到的内容来看,现在使用的 wsHttpBinding 和服务器证书是不可能的。

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

  1. 更改了要使用的绑定 基本HttpBinding
  2. 从行为中删除了对服务器证书的提及
  3. 已安装并 在类库上启用 WSE 项目。
  4. 尝试在 .NET 2.0 winforms 应用程序中使用 WCF Web 服务方法 - 史诗般的失败!!

不管我如何在服务器端配置绑定 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应用。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • Errmm,要么我的帖子模棱两可,要么你没看懂。 Web 服务是 WCF,在 .NET 4.0 的“服务器”上运行。桌面应用程序是 .NET 2.0,只需通过 SSL 使用用户名/密码调用服务。互联网上的许多帖子都说这是可能的,只是没有足够的细节。
    • 我不确定彼得是否有可能。您的 .NET 2.0 客户端通常不知道如何使用 Web 服务。也许有办法做到这一点,但我认为这将是相当骇人听闻的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2012-05-29
    • 2011-11-07
    相关资源
    最近更新 更多