【问题标题】:WCF: How to use client proxy and config files on client?WCF:如何在客户端使用客户端代理和配置文件?
【发布时间】:2012-09-06 06:02:58
【问题描述】:

我正在尝试手动创建服务,因为它与我们的应用程序的要求有关。

我想将服务托管到控制台应用程序。我该怎么做?

我再次有 2 个项目:

1) 简单库:

它只包含一个带有服务合同(接口)的文件:

[ServiceContract]
public interface IMessageManager
{
    [OperationContract]
    string ConvertToUpper(string text);
}

我编译该库并创建 DLL 文件作为输出。

之后我使用 svcutil.exe 手动生成客户端代理类 (.cs) 文件和配置文件 (output.config)。

2) 控制台应用程序:

它引用了库 DLL 和实现服务契约的类:

public class MessageManager : IMessageManager
{
    public string ConvertToUpper(string text)
    {
        return text.ToUpper();
    }
}

它还有 2 个由 svcutil.exe 生成的文件。我已将 output.config 文件中的所有内容复制到控制台应用程序的 App.config 文件中。我写了客户端代码如下:

MessageManagerClient client = new MessageManagerClient();
string output = client.ConvertToUpper("aaaa");
Console.WriteLine(output);

App.config 文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="DefaultBinding_IMessageManager" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBinding_IMessageManager"
          contract="IMessageManager" name="DefaultBinding_IMessageManager_IMessageManager" />
    </client>
  </system.serviceModel>
</configuration>

那么,在这种情况下我应该指定什么地址?

也许我上面的方法有问题?

任何帮助都非常感激。谢谢。

【问题讨论】:

    标签: wcf proxy client config


    【解决方案1】:

    回答您的问题:

    1. 您将地址作为属性添加到在&lt;client/&gt; 下定义的&lt;endpoint/&gt;。例如:&lt;endpoint address="http://localhost/blah" ...
    2. 您是正确的 SOAP 信封是为每个请求生成的。不存在“文件”。

    【讨论】:

    • 我试过了,但是得到这个错误:“无法连接到localhost:8080/message。TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它127.0.0.1:8080 。”我已经关闭了 Windows 防火墙。客户端是托管在我机器上的 IIS 上的 ASP.NET 应用程序。
    • 所以,我不知道如何设置。我生成了客户端代码和配置文件。下一步该怎么做?我知道如何使用向导使用 WCF 服务,但在这种情况下没有向导。
    • 那么服务托管在您的 asp.net 中吗?如果是,那么您的客户在哪里?
    • 我如何知道我的服务托管在哪里?我有 2 个项目:只有接口类的库和作为客户端的 ASP.NET 应用程序,我在其中复制了 svcutil 生成的文件并从库项目中实现了接口。这是一本书的方法,我也在问自己如何托管服务。
    • 我不懂手动方法。我做的对吗?我创建了新的库项目,在那里只添加了接口(服务合同)并编译了它。之后我创建了 ASP.NET 应用程序,添加了对库 DLL 的引用,添加了实现服务契约的类,添加了 svcutil.exe 生成的 2 个文件,编写了客户端代码并运行了 ASP.NET 应用程序。
    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多