2009-11-03 62 views
10

我正在使用Visual Studio 2008,並且有一個WCF客戶端可以針對WCF服務工作。它們都位於相同的Visual Studio解決方案中。在我對WCF合同進行了更改之後,我想更新客戶端上的服務引用,以便在代理中對合同進行更改。更新服務引用不起作用

我的問題是,代理代碼不會重新生成。

當我選擇來更新服務參考,將出現以下情況:

  1. 與標題的對話框的「更新服務引用‘名稱的引用’」被示出。這個對話框有一個進度條。
  2. 的進度移動,在對話框中的狀態文本更改爲「更新配置」
  3. 的進度移動多一點,狀態文本chnaged「配置更新完成」

對話沒有顯示文本「生成\東西\」(不記得確切的措辭),我會推算。

如果我刪除服務引用並再次添加它,代理已正確生成。我使用與以前完全相同的設置添加服務,所以我不認爲這是我可以通過更改客戶端上的服務參考配置來解決的問題。

我懷疑的一件事可能是問題是我已經重命名了app.config中的默認wsHttpBindings。我也重命名了默認端點。這背後的原因是我需要多個端點,並且有一個名爲'some-default-name'的名稱,而我自己的名字只是令人困惑。

刪除服務並再次添加服務的問題是Visual Studio在app.config中添加了一個新的綁定(除其他外),它不應該在那裏。

之前有人看過這個問題嗎?任何人都知道它的解決方案?

回答

6

當我們都有過這樣的問題,它通常是這些錯誤之一:

  • 合同的規模已經擴大,現在已經是如此之大,在WCF配置不允許其被轉移。
  • 一個新的類已被添加到WCF接口,並且該類未標記爲可序列化。
  • 有從構建停止代碼編譯錯誤,因此它使用了舊的DLL
+8

不幸的是,這些都不適用於我。當我刪除引用並再次添加它時,它工作得很好。如果合同太大或WCF合同中存在任何錯誤,那麼在刪除/添加操作之後它將不起作用。 – Nitramk 2009-11-04 10:13:28

1

我的問題是,我有兩種方法具有相同的名稱。一切都很好,但我無法更新服務參考。當我試圖啓動WCF服務時,彈出錯誤。

+0

我也有這個問題。編譯器不會在構建服務項目時發生抱怨,但消費者項目中的服務引用不會更新。我注意到,如果'您的服務已託管'彈出式窗口在更新時未顯示,則更新也不起作用。 – 2012-10-25 15:51:42

1

我的錯誤是我忘了添加OperationContract屬性。

+0

這很容易錯過。 – 2012-10-25 15:52:10

3

在我的情況下,問題是以前的開發人員使用他的機器名而不是本地主機添加了服務引用。所以當我告訴Visual Studio更新時,它連接到他沒有更改的機器。我修改了服務引用文件,並用本地主機替換了他的機器名,並且能夠更新引用。

5

我碰到的這個問題,符合下列條件:

  1. 我們的工作站連接到Active Directory域(幾乎所有使用Windows身份驗證)
  2. 我想要的服務引用更新託管在本地主機上,並且正在IIS Express下運行(因此應用程序池用戶正在作爲開發人員的個人域用戶帳戶運行)
  3. 另一個開發人員比我更近或更新了對該項目的引用。

我已經找到了如何解決此問題的唯一方法是編輯configuration.svcinfo文件,該服務引用(你需要顯示所有文件的項目,看看它在Visual Studio),找到以下部分:

userPrincipalName value="[email protected]" 

並將用戶更改爲我自己的域用戶。在保存文件後,我無需更新引用,直到其他開發人員更新服務引用(可能使用相同的解決方法)。不幸的是,我一直無法找出這個問題的永久解決方案。

+0

爲我工作。好人!!謝謝。 – Mayeed 2015-08-12 15:01:46

0

我知道這個解決方案是一個有點晚了,但沒有成功嘗試發佈的解決方案後,這工作:

當你創建一個WebService,它會生成您引用爲您服務引用.dll文件。這個.dll是(最知道的),每次你修改.SVC文件都不會重新創建。你可以看到這個,如果你去查看日期修改的Web服務.dll文件的屬性,在我的情況下,它是三個小時!

我的解決方案是對服務聯繫人進行適當的更改並保存,然後重新構建項目,這會導致它重新創建所有反映您對服務聯繫人文件(.svc)所做更改的.dll文件。

之後,更新客戶端應用程序上的服務引用,並且更改很明顯。

  • 黑桃
1

突出服務爲活動項目,F5在VisualStudio中運行它,它會在服務測試應用程序啓動。停止調試。然後嘗試更新您的服務參考 - 爲我工作。

+0

這適用於我,右鍵單擊.svc文件,單擊瀏覽,選定的IE。關閉了頁面,然後更新了引用,它工作。 Neill – Neill 2015-04-16 15:54:22

1

兩個簡單的步驟來解決:

  1. 運行服務,然後停止。

  2. 更新服務參考。

1

我也有這個問題。刪除服務引用並重新創建它。

+0

如果有人遇到我的問題,請添加。從Visual Studio刪除工作不正常,我不得不從VS中刪除,然後從文件資源管理器中刪除。 – omerts 2017-12-25 21:51:42

0

我有同樣的問題。修改了一些數據合同。試圖「更新服務參考」並沒有看到變化。丟棄並重新添加服務。在客戶端編寫代碼時仍然沒有看到改變。用Reflector打開我的客戶端,看到服務類型發生了變化!那麼爲什麼intellisense仍然顯示舊物業?重新啓動的Visual Studio和修改終於在intellisense中顯示。

0

我有同樣的問題,該由我來說,這是由GIT造成合並衝突,我是從我的csproj文件

<ItemGroup> 
    <None Include="Service References\<SERVICE NAME>\Reference.svcmap"> 
     <Generator>WCF Proxy Generator</Generator> 
     <LastGenOutput>Reference.cs</LastGenOutput> 
    </None> 
    </ItemGroup> 

我加入奧德這個Reference.svcmap

線缺少下列代碼
0

這些類型的問題的另一種解決方案是,如果您的名稱空間在引用了兩個服務的項目中混亂。所以:

項目A - 消耗ServiceA

項目B - 消耗ServiceA,具有一定的參考,以項目A

如果更改ServiceA和更新項目B,有時命名空間可以可以改變一下項目A版的服務。