2016-07-27 44 views
0

現在我們一直在與一個奇怪的問題鬥爭了幾天。已經搜索網絡的答案,但似乎沒有解決這個錯誤。Silverlight Web服務更新無法導入wsdl

我們的場景是:我們的組織有一個Silverlight 5應用程序,它是在VS 2010中開發的,並且一切正常。它實際上在我們的生產服務器上運行。
最近我們將我們的開發機器遷移到了VS 2015以及機器本身(新的機器部分)。操作系統是Windows 7,和以前一樣。

起初,我們與那個討厭的MatchTimeoutInMilliseconds錯誤受到歡迎,由於MS框架。最終MS發佈了涵蓋此問題的4.6.2預覽版。

好的。所以回到實現所要求的更改,我們在我們的web服務中創建了一個新方法,並且它很好。我們確實有[OperationContract][DataContract]標籤。有一個問題發佈和解答這些標籤丟失的理由。
但是,當我們轉到SL應用程序並更新WS引用時,我們得到此「自定義工具錯誤:無法爲服務引用生成代碼...」
自定義工具警告消息包括
「無法導入wsdl:綁定...「
」無法導入wsdl:port ...「
」無法導入wsdl:portType ...「
」找不到與Silverlight 5兼容的端點,生成的客戶端類將不可用,除非端點信息通過構造函數提供。「

我們很納悶,因爲那時我們認爲我們可能會做錯事,所以我們回滾的變化,並更新不改變服務的參考,我們得到了同樣的錯誤。 Referece.cs文件是在沒有代碼的情況下生成的,並且所有對web服務的引用都不再被編譯器識別。

我們也看了一些帖子說提供最便捷的解決方案取消選中「在引用的程序重用類型」。這樣做的確清除了這些錯誤,只是爲了生成其他錯誤,因爲我們的應用程序是建立在這個前提之上的。
我們也嘗試刪除服務引用並將其添加回去,但無濟於事。

最終,我們將SL應用程序還原到了編譯的位置,這是在更新Web服務引用之前,用新方法重新發布了WS,並手動將新方法添加到Reference.cs文件中,對其進行了測試並有用。

但是,這不應該是 - 解決方案。這是一個麻煩,容易出錯。 我們希望在解決此問題方面提供任何幫助,或者瞭解爲什麼會發生這種情況。

感謝

+0

您的服務是否通過驗證保護? – BugFinder

+0

不是,它很簡單,並在同一臺機器上運行 –

+0

那麼我有點難倒那麼,因爲我做了同樣的事情,我有一個vs2010,雖然我經歷了2013年,但移動到2015年,沒有遇到這個。然而我沒有搬到4.6.2即時4.5,因爲我可以:P – BugFinder

回答

0

整個問題是,由於某種原因,我仍然沒有找到,VS無法生成代碼爲Reference.cs

作爲解決方法,我們設法通過使用SlSvcUtil.exe工具(位於我的機器上)「c:\ Program Files(x86)\ Microsoft SDKs \ Silverlight」中生成Reference.cs文件\ V5.0 \工具」。

爲了獲得相同的代碼遷移之前產生的一個,我用下面的命令和選項:

SlSvcUtil.exe my_ws_address /命名空間:「*,my_class_namespace」/ct:System.Collections.ObjectModel.ObservableCollection`1/r:「C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v5.0 \ System.Windows.dll」/ edb/ser:Auto

我沒有使用/ out開關,而是在我所需的輸出目錄上運行命令。但是在運行該命令之前,您可能需要查看該開關。