2010-03-24 36 views
1

我已經使用REST入門工具包編寫了一些代碼,它在我的開發機器上工作正常。然而,當我把它上傳到我們的服務器的頁面給我,我已經通過線上剔除行代碼以下錯誤消息......當使用REST入門工具包時出現ASP.net錯誤信息

CS1684: Warning as Error: Reference to type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' claims it is defined in 'c:\WINNT\assembly\GAC_MSIL\System.ServiceModel.Web\3.5.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll', but it could not be found

,看來,下面的代碼行觸發錯誤..

HttpContent newOrganizationContent = HttpContentExtensions.CreateXmlSerializable(newOrganizationXml); 

真的沒有一個線索如何解決它。我認爲這可能是因爲它需要更新版本的框架來運行,但在IIS中看它說它運行的版本是2.0.50727,我認爲它是lates版本,因爲它表示即使我們使用框架3.5時

非常困惑,有什麼想法?

喬恩

回答

1

起初,我認爲這是可能的,因爲你部署到沒有.NET框架3.5SP1安裝,只有.NET 3.5RTM服務器。

但是,在檢查.NET 3.5 RTM System.ServiceModel.Web.dll程序集時,我發現System.Runtime.Serialization.Json.DataContractJsonSerializer實際上已被定義。

compiler warning CS1684表明在服務器的GAC中有一個System.ServiceModel.Web.dll程序集,但沒有定義System.Runtime.Serialization.Json. DataContractJsonSerializer

所以事情我會檢查:

  • 檢查部署服務器運行的是.NET 3.5 RTM和一個測試版或發佈候選版不使用或尚未遺留下來的。

  • 在Visual Studio 2008中,請確保您在項目屬性中選擇了.NET 3.5的「目標框架」。

最後一次檢查,你可以做,看看問題出在服務器的框架安裝是敲了一個簡單的應用程序直接消耗DataContractJsonSerializer。有該類的MSDN文檔頁面上的例子:

DataContractJsonSerializer Class (MSDN)

作爲最後的手段,如果服務器在你的控制,那麼我卸載的.NET Framework 3.5,然後在重新安裝來自:

Microsoft .NET Framework 3.5 Service Pack 1 (Full Install)

更新:

按照您的意見:

如果你正在運行的3.5那麼機會是一個測試版DataContractJsonSerializer不在System.ServiceModel.Web.dll組件中。

我似乎記得回到CTP,測試版和候選版本在這個領域有突破性的變化。我依稀記得,由於JSON和社區壓力的日益普及,DataContractJsonSerializer是這些最新增加/變化之一。我的記憶有點模糊,但它響了。

代替你需要從海關總署註銷當前版本,然後使用GACUTIL.exe工具註冊RTM一個DLL。我不會建議混合RTM和beta比特,你會讓自己對不可預知的行爲開放。

+0

我知道一個事實,即服務器只運行了3.5 RTM不公測版本中,我們從來沒有因爲我們擔心它會搞砸了,我們已經有了服務器上運行的東西升級它。我所做的事是找到System.ServiceModel.Web.dll並用較新的版本我在其上運行的RTM我們的其他服務器中的一個找到取代它(和它有一個更大的文件大小)。不幸的是我仍然有同樣的錯誤。 – jonhobbs 2010-03-25 12:27:31

+0

我正在考慮將hte腳本放在較新的服務器上並從那裏調用它。 – jonhobbs 2010-03-25 12:28:00

+0

@jonhobbs - 當你說'替換'時,你是如何替換它的? – Kev 2010-03-25 12:41:51

相關問題