【问题标题】:Create a WCF Client wihout Configuration File创建没有配置文件的 WCF 客户端
【发布时间】:2014-02-23 18:08:06
【问题描述】:

请帮我解决这个问题..

如何在 app.config 中不指定客户端配置的情况下创建 WCF 客户端。

我看过这个链接

.NET - deploying a WCF client, without an app.config

但是,您需要按属性指定配置属性。 无论如何,我们可以将 app.config 配置用作单个字符串并分配给一个类并完成它吗?

喜欢

var config=GetEndpointConfig(endPointName);
var bindingData=GetBinding(nameodBinding);

该方法在这样的字符串中返回整个配置。

端点:

<endpoint address="http://localhost:61144/Sampler.svc" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_Iervice" contract="IService"
      name="BasicHttpBinding_IService" />

绑定:

<basicHttpBinding>
    <binding name="BasicHttpBinding_IService" 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>

我不想导入配置文件并在当前应用程序中加载配置,因为还有其他模块会受到影响。我正在引用this 正在使用的示例

 System.Configuration.Configuration config = 
            System.Configuration.ConfigurationManager.OpenMappedExeConfiguration
            (filemap, 
             System.Configuration.ConfigurationUserLevel.None);

提前致谢!!!

【问题讨论】:

标签: c# wcf app-config


【解决方案1】:

无论如何我们可以将 app.config 配置用作单个 字符串并分配给一个类并完成它

没有。

如果服务是使用所有绑定参数的默认值创建的,您可以像这样使用它:

using System.ServiceModel;

var factory = new ChannelFactory<IMyServiceInterface>(
    new BasicHttpBinding(), <-- or whatever binding your service uses
    new EndpointAddress("http://MyServiceUrl"));

var proxy = factory.CreateChannel();

然后就可以通过代理访问服务操作了。

更新

根据你下面的cmets,看看下面的链接:

Read .NET configuration from database

所以不,没有办法很好地做到这一点(尽管您可以查看Chinchoo 框架)。

【讨论】:

  • 当我说在单个字符串中获取所有配置时,我的意思是仅在字符串中的端点配置而不是整个配置文件。我曾在一个项目中工作,该项目将这些配置部分(如端点和绑定)保存在不同的表中,并可以让它们运行并创建一个客户端。我现在无法获得该代码....
  • 感谢@hugh 的更新但是,我只能从 XML 获取配置点并使用该方法从中创建配置对象。不过,没有提到如何从中创建 wcf 代理。
  • @sriharshaKB 你为什么还要这样做?
  • 我们在之前的项目中这样做的原因是,如果我们可以更改 WCF 服务器,我们可以在不重新启动 Web 应用程序的情况下进行。(因为配置更改会重新启动网站)。其次,我们在这里没有获得 touch app.config 的权限。另一方面,我们可以在 DB 中添加/更改数据。而且我知道我们可以做到……在我们之前的项目中就做到了……我只是不知道他们是怎么做到的……
  • “第二,我们没有权限在这里触摸 app.config”。所以你是说你不允许对你应该在应用程序中进行更改的一件事进行更改?我会辞职。
【解决方案2】:

是的,您可以在这里加载您为客户端提供的配置文件的文章 loading configuration file

【讨论】:

  • 在这种情况下,配置也必须从文件中加载...这将应用于当前加载的应用程序。我想从数据库中单独获取端点配置并创建一个客户端。有办法吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-03
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多