2010-02-05 107 views
2

我是WCF的新手。我在iis的wcf服務運行良好。我對其中主類是DAL的DataAccessLibrary.dll進行了代碼更改。 service.cs文件引用此dll。我將新的dll放入了bin文件夾。現在在service.cs代碼中出現了一個錯誤,提示「DAL在當前上下文中不存在」。我認爲這與service.cs類引用舊的dll而不是新的dll有關。但我不知道如何去解決它。IIS中的WCF如何更新bin文件夾中的dll?

回答

2

更糟糕的情況是,如果服務代碼引用Visual Studio中的DAL程序集,則需要再次打開WCF項目/解決方案,確保該引用是最新的DAL(通過項目引用或DLL參考)並重建/重新發布。

有可能更好的方法,但這應該工作作爲後備選項...

編輯:

提供關於也許更有效的方法的一些反饋與WCF開發工作 - 在這裏是我們如何在這些系統上運行:

  1. 外部公共庫如DAL,核心業務組件等存儲在網絡上(例如,UNC下形如\\DEVSTORE\CommonAssemblies\DAL\MyDal.dll等)
  2. 在Visual Studio的WCF應用程序中,爲網絡上的DLL添加一個實際的引用。默認設置將在生成過程中將dll本地複製到bin文件夾
  3. 使用Visual Studio中的發佈功能將svc,bin文件夾,web.config等輸出到臨時文件夾或IIS應用文件夾本身。
  4. 當處理VS中的通用DAL或其他常用庫時,只需確保在構建時將DLL的副本放到公用網絡位置。

使一個非常簡單的開發經驗。

+0

通過重新發布,您的意思是將所有必需的文件(接口文件,服務類文件和dll)放入IIS中正確的文件夾中? webservice項目沒有通過「添加引用」選項添加到它的任何引用。儘管接口類和服務類都有一個使用DataAccessLibrary.dll的語句。在解決方案資源管理器中查看,它的解決方案中包含來自其他項目的所有dll的Bin文件夾。這個項目是被遺傳的,這就是爲什麼我不太瞭解它。 – cyrix86 2010-02-05 16:59:02

+0

因此,DAL程序集必須已經手動添加到Visual Studio中的WCF項目的bin文件夾中,否則它永遠不會構建(具有與上述相同的錯誤)......如果您在VS中有WCF解決方案,請選中DLL的bin文件夾,您可能需要在那裏覆蓋它。您做了哪些類型的代碼更改(即新功能,名稱空間更改,訪問級別更改 - 私有/公共等)? – 2010-02-05 17:08:37

+0

沒有那樣的,在DAL庫中有一個查詢數據庫的方法。我所做的只是爲SQL添加了另一個「AND」條件。我已驗證代碼正常工作。我有一個使用相同的DAL庫的Windows服務,它沒有問題。問題在於,在service.cs代碼中調用DAL類名稱本身時未被識別。我將嘗試覆蓋wcf項目的Bin文件夾中的dll,然後重建/部署到IIS。我會在一分鐘內回覆您 – cyrix86 2010-02-05 17:16:35

相關問題