我正在將客戶端寫入WCF服務。這是一個包含以C#,C++,VB和Java編寫的模塊的較大系統中的單個應用程序。所有的應用程序共享常見的配置和日誌記錄機制,不管他們寫的。.NET - 部署WCF客戶端,無需app.config
我想弄清楚如何構建客戶端應用程序,使其沒有一個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的方式做?
創建代碼來配置事物的唯一選擇,我使用代碼來設置端點地址的方式?在代碼中創建必要的綁定等?那麼,如何知道要編寫這些不透明的XML塊?
有我思考SysAdmins應該能夠改變像WCF服務setttings,愚蠢的我。 – ChrisBint
什麼樣的設置?網址是什麼?當然。綁定?爲什麼?我正在構建一個客戶端來與在IIS上運行的服務進行交談。沒有必要允許系統管理員將綁定更改爲除HTTP之外的其他內容。 –
主機名和任何與服務實際交談的事情如何? – ChrisBint