gpt4 book ai didi

.NET - 部署 WCF 客户端,没有 app.config

转载 作者:行者123 更新时间:2023-12-03 11:37:25 26 4
gpt4 key购买 nike

我正在将客户端写入 WCF 服务。这是一个更大系统中的单个应用程序,包括用 C#、C++、VB 和 Java 编写的模块。所有应用程序都共享共同的配置和日志记录机制,无论它们是用什么语言编写的。

我想弄清楚如何构建客户端应用程序,以便它可以在没有 app.config 的情况下运行。为什么?因为 app.config 中的大部分内容都是不应该允许系统管理员更改的样板文件,并且应该允许系统管理员更改的设置应该在系统范围的配置中,而不是在 app.config 文件中坐在 bin 目录中。

举个例子——客户端的 app.config 当前如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WSHttpBinding_ICourierService">
<security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation"
...
</security>
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Default" writeEncoding="utf-8">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport manualAddressing="false"
...
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:57102/MyService.svc"
...
>
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>

这是系统管理员不应该处理的一堆不透明的样板。其中大部分是由 Visual Studio 插入的。我对文件进行了一项更改 - 我增加了 <readerQuotas/> 中的最大大小.但这是我不希望系统管理员搞砸的变化。除了 <endpoint address=""/> 之外,我希望系统管理员处理的文件中没有其他内容。 .

我正在从系统范围的配置中提取端点地址,并在代码中设置它。此文件中没有任何内容应该是用户可编辑的。

那么,我如何配置一些东西以便我不需要它存在呢?

我可以将它作为资源嵌入到程序集中,并挂接到 app.config 加载过程中,就像我对所需 DLL 所做的那样吗?

创建代码来配置事物的唯一选择是我使用代码设置端点地址的方式吗?在代码中创建必要的绑定(bind)等?那么,考虑到这些不透明的 XML block ,我如何知道要编写什么代码呢?

最佳答案

您可以使用以下代码来创建配置正在执行的绑定(bind)。我不确定这是否会让您完全删除该文件,但如果是这种情况,应用程序将不会使用该配置。将您自己的值放入超时等中。

    var binding = new WSHttpBinding();
binding.SendTimeout = new TimeSpan(0, 0, 0, 0, 100000);
binding.OpenTimeout = new TimeSpan(0, 0, 0, 0, 100000);
binding.MaxReceivedMessageSize = 10000;
binding.ReaderQuotas.MaxStringContentLength = 10000;
binding.ReaderQuotas.MaxDepth = 10000;
binding.ReaderQuotas.MaxArrayLength = 10000;
var endpoint = new EndpointAddress("http://localhost:57102/MyService.svc");
var myClient = new WebServiceclient(binding, endpoint);

关于.NET - 部署 WCF 客户端,没有 app.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com