2013-09-24 19 views
0

我剛剛使用VS2010重建了我的WCF解決方案,並將其上載到具有IIS 7.5的Windows 2008服務器上。由於某種原因,即使清理臨時ASP.NET文件後,重新啓動服務器 - http://www.mysite.com/myservice?xsd=xsd1(和所有其他XSD文件)也會顯示舊的模式。重建WCF解決方案後,IIS提供舊的XSD和WSDL文件

因此,我生成的WSDL是沒有用的。

我發現這個討論在這裏:http://social.msdn.microsoft.com/Forums/vstudio/en-US/6a9e48e3-25ec-4859-abe4-2b0a335b23ae/wcf-service-wont-update

但我已經試過上面討論的事情,並且這是行不通的。我有一種感覺,這裏有一些非常簡單的東西。

更新:過了一會兒,我發現這個職位(Update service reference not working),當我提出我的整個編譯WCF解決方案進入一個嶄新的AppDirectory,它與一個「無法加載組件XXXXX或它的一個依賴爆發。 後來我檢查了我的日誌,融合,發現該日誌文件中的一個:

LOG: Assembly download was successful. Attempting setup of file: 
C:\inetpub\wwwroot\my\path\to\lib.dll 
LOG: Entering download cache setup phase. 
LOG: Assembly Name is: XXXXXX, Version=1.0.4983.31160, Culture=neutral, PublicKeyToken=null 
ERR: Setup failed with hr = 0x8007000b. 
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated. 

解決方法:所以我不認爲這是一個解決方案,但

  1. 我創建了一個單獨的解決方案 - 自承載WCF服務主機,
  2. 加了我的所有引用在那裏(我的WCF服務庫也在其中),
  3. 內置自託管解決方案,
  4. 運行自在服務器上託管了EXE,並在瀏覽器中運行了Design Time URL。
  5. 能夠看到正確生成的WSDL和XSD文件!
  6. 將必要的DLL引入到我的ASP.NET App Directory的bin文件夾中。
  7. 刷新我的瀏覽器並在XSD中看到了所需的更改!

我的猜測是,當我啓動自託管服務,並在瀏覽器中運行它時,新DLL被存儲在一些我不知道的臨時ASP.NET目錄中。然後IIS使用該目錄來執行該DLL。

如果有人能解釋這個世界上的運作方式,以及正確的方法是什麼,我將不勝感激。

解決方案:

所以我所有的煩惱後,這裏發生了什麼:

  • 我使用SVN傳輸文件到服務器上。
  • 當我在服務器上運行svn up時,出現了與舊文件解決的衝突。
  • 因此,由於衝突,App Directory包含舊文件,並且新文件從未將其保存在那裏。
+0

可能會出現很多錯誤,但第一個問題是:您是否確定要連接到部署它的同一臺服務器?例如環回在你的機器配置中用於測試目的? – Silvermind

+0

我知道這是肯定的,因爲我手動將文件複製到IIS應用程序目錄,它以前託管的位置。甚至與web.config搞砸了:關閉httpgetenabled然後恢復它。我有一種感覺,其他緩存存儲在其他地方... –

+0

您可以嘗試設置'Batch =「false」',它是web.config中'Compilation'標記的屬性。這迫使每個用戶創建一個單獨的緩存而不是一個全局緩存。雖然你不想離開它。它幫助了我一些令人討厭的cahce持久性。我將它設置爲false,發出了幾個請求並再次將其刪除。此外,我並不是指部署,而是關於環回的連接。 – Silvermind

回答

0

我有一個類似的問題,它是由主要服務組件的老版本躺在「bin」文件夾中新的附近。他們一起到達那裏,因爲我一度將其重新命名,並開始使用新名稱進行部署,但舊的名稱保持在原來的位置,並且這給我間歇性關於缺少合同的錯誤。

相關問題