2012-01-12 44 views
2

我有在web.config文件的對System.Web \組件部分添加的組件的web服務:更新web服務,而不更新的web.config

<add assembly="MyWebservice, 
    Version=1.0.0.36211, 
    Culture=neutral, 
    PublicKeyToken=b9f7c69b7e2ca2dc" /> 

的問題是,如果我把出一個更新,配置文件也必須更新,即使沒有任何改變,但在一行中的版本號。這對運行此服務的人員以及想要更新的人員造成頭痛。他們可能會將服務安裝在同一臺服務器上的多個不同位置,並進行個人自定義設置。更新強制他們遍歷所有文件夾並更新這一個文件。在代碼中可以這樣做嗎?因爲我已經定義了一些IHttpHandlers,所以在配置文件中列出了Dll。這是用C#編寫的.NET 4 webservice。

+0

如果你完全刪除'Version =',它還能工作嗎? – 2012-01-12 22:42:59

回答

0

當然,試試這個:

<add assembly="MyWebservice, Culture=neutral, PublicKeyToken=b9f7c69b7e2ca2dc"/> 
3

我們始終排除版本,文化,從組件條目公鑰出於這個原因。有一些DLL需要這個,主要用於授權,但在你的情況下,它應該很好地工作以移除該信息。

你應該能夠將其改爲:

<add assembly="MyWebservice"/> 

我們也做了組件一樣添加到項目(我們手動編輯的csproj或vbproj文件)和licenses.licx,除非該組件供應商特別需要一個版本。

+0

這是否不允許將DLL切換出來並可能導致漏洞?我的意思是安全性可能會或可能不會成爲用戶的一個因素。 – 2012-01-12 22:47:46

+1

我很確定.NET會嘗試使用您提供的信息來解析DLL。意思是,你可以給它一個公鑰但不指定一個版本號。這仍然是相當安全的,因爲如果不是不可能改變的話,公鑰密碼很難。 – 2012-01-12 22:57:14

+0

如果GAC中有多個版本的DLL,會導致問題?或者,我的服務是否只是在編譯期間尋找它的約束? – 2012-01-13 14:29:39