我剛剛使用VS2010重建了我的WCF解決方案,並將其上載到具有IIS 7.5的Windows 2008服務器上。由於某種原因,即使清理臨時ASP.NET文件後,重新啓動服務器 - http://www.mysite.com/myservice?xsd=xsd1(和所有其他XSD文件)也會顯示舊的模式。重建WCF解決方案後,IIS提供舊的XSD和WSDL文件
因此,我生成的WSDL是沒有用的。
但我已經試過上面討論的事情,並且這是行不通的。我有一種感覺,這裏有一些非常簡單的東西。
更新:過了一會兒,我發現這個職位(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.
解決方法:所以我不認爲這是一個解決方案,但
-
後
- 我創建了一個單獨的解決方案 - 自承載WCF服務主機,
- 加了我的所有引用在那裏(我的WCF服務庫也在其中),
- 內置自託管解決方案,
- 運行自在服務器上託管了EXE,並在瀏覽器中運行了Design Time URL。
- 能夠看到正確生成的WSDL和XSD文件!
- 將必要的DLL引入到我的ASP.NET App Directory的bin文件夾中。
- 刷新我的瀏覽器並在XSD中看到了所需的更改!
我的猜測是,當我啓動自託管服務,並在瀏覽器中運行它時,新DLL被存儲在一些我不知道的臨時ASP.NET目錄中。然後IIS使用該目錄來執行該DLL。
如果有人能解釋這個世界上的運作方式,以及正確的方法是什麼,我將不勝感激。
解決方案:
所以我所有的煩惱後,這裏發生了什麼:
- 我使用SVN傳輸文件到服務器上。
- 當我在服務器上運行
svn up
時,出現了與舊文件解決的衝突。 - 因此,由於衝突,App Directory包含舊文件,並且新文件從未將其保存在那裏。
可能會出現很多錯誤,但第一個問題是:您是否確定要連接到部署它的同一臺服務器?例如環回在你的機器配置中用於測試目的? – Silvermind
我知道這是肯定的,因爲我手動將文件複製到IIS應用程序目錄,它以前託管的位置。甚至與web.config搞砸了:關閉httpgetenabled然後恢復它。我有一種感覺,其他緩存存儲在其他地方... –
您可以嘗試設置'Batch =「false」',它是web.config中'Compilation'標記的屬性。這迫使每個用戶創建一個單獨的緩存而不是一個全局緩存。雖然你不想離開它。它幫助了我一些令人討厭的cahce持久性。我將它設置爲false,發出了幾個請求並再次將其刪除。此外,我並不是指部署,而是關於環回的連接。 – Silvermind