Jef*_*ege 22 .net wcf app-config
我正在写一个客户端到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>
Run Code Online (Sandbox Code Playgroud)
这是系统管理员不应该处理的一堆不透明的样板.其中大部分是由Visual Studio插入的.我在文件中做了一个更改 - 我增加了最大尺寸<readerQuotas/>.但这是一个我不希望系统管理员搞砸的变化.除了for,我希望系统管理员在文件中没有别的东西<endpoint address=""/>.
我从系统范围的配置中提取端点地址,并在代码中设置它.此文件中没有任何内容应该是用户可编辑的.
那么,我如何配置东西,以便我不需要它存在?
我可以将它作为资源嵌入到程序集中,并挂钩到app.config加载过程,就像我对所需的DLL一样吗?
是创建代码来配置东西的唯一选择,我使用代码设置端点地址的方式?在代码中创建必要的绑定等?那么,如果给出这些不透明的XML块,我怎么知道要编写什么代码呢?
Gra*_*ter 38
您可以使用以下代码创建配置正在执行的绑定.我不确定是否会让你完全删除文件,但如果是这种情况,应用程序将不会使用配置.把你自己的价值放在超时等
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17048 次 |
| 最近记录: |