簡體   English   中英

從app.config以外的文件初始化BasicHttpBinding對象嗎?

[英]Initialise BasicHttpBinding object from file other than app.config?

我目前在C#中具有需要BasicHttpBinding對象才能連接到SSRS的代碼。 就目前而言,我使用代碼中分配的值來初始化此對象,而不是從app.config讀取它(這是因為我要部署到的平台MS CRM 2011不提供對以下對象的app.config文件的訪問權限實際上,我認為app.config文件甚至不會復制到服務器上。

我想使此綁定可編輯而無需重新編譯,因此該解決方案可以輕松地安裝在不同的客戶上。 我能想到的最干凈的方法是將綁定配置存儲在Web資源中(對於非CRM人員,這只是存儲在CRM中的文件的名稱,您可以從代碼中訪問該文件),但我不是確定將配置解析為BasicHttpBinding對象的最佳方法? 手動解析它並設置屬性似乎效率不高,而且不是很可靠。

有什么辦法可以讓我使用.NET(類似於BasicHttpBinding(string)構造函數,但是由於我無權訪問app.config,因此這不是一種選擇)嗎?

鑒於此配置的(大概)易變性,您能否在插件注冊步驟中將其存儲在插件安全/不安全配置中? 在運行時訪問此文件將比連接到CRM檢索Web資源的內容要快得多。 當然,這意味着您需要插件注冊工具和sys admin才能進行更改,但這也意味着用戶會混淆所有敏感數據。 插件的App.config確實不可用-但這就是插件步驟中的config部分所針對的。

BasicHttpBinding構造函數用於BasicHttpBinding這似乎是您正在尋找一種方法,只需傳遞config部分的鍵名,即可為您完成所有構造函數魔術。 我不相信這是有可能的,但是無論如何,您的建議“ 手動解析它並設置屬性似乎效率低下 ”可能是沒有根據的-畢竟,這正是本機構造函數最終將要做的事情。 將其隱藏在一個函數后面,您將永遠不會知道它在那里;)

我以前已經在插件中連接到SSRS Web服務(請注意-由於未公開服務:()在CRM Online中不支持,所以我采用了通常的方法,將上述配置存儲在插件配置中,然后將其讀入然后在運行時XmlDocument解析出實例化對象/集合屬性所需的值。

只要對插件的所有請求的配置都相同,您還可以通過將配置值(而不是連接本身)設置為插件中的類級屬性來潛在地提高效率(即使這違反了SDK-但這是由於線程安全性,對於諸如此類的“靜態”配置值不應該成為問題,並且僅在尚未設置的情況下才從config中讀取值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM