[英]ASP.net error message when using REST starter kit
我已經使用REST入門工具包編寫了一些代碼,並且在我的開發機器上運行良好。 但是,當我將其上傳到我們的服務器時,頁面顯示以下錯誤消息...
CS1684:作為錯誤警告:對類型'System.Runtime.Serialization.Json.DataContractJsonSerializer'的引用聲稱它在'c:\\ WINNT \\ assembly \\ GAC_MSIL \\ System.ServiceModel.Web \\ 3.5.0.0__31bf3856ad364e35 \\ System.ServiceModel中定義。 Web.dll”,但找不到
我已經逐行刪除了代碼,看來下面的代碼行正在觸發錯誤...
HttpContent newOrganizationContent = HttpContentExtensions.CreateXmlSerializable(newOrganizationXml);
真的不知道如何解決它。 我認為可能是因為它需要運行較新版本的框架,但是在IIS中查看它說它正在運行2.0.50727版本,我認為這是最新版本,因為即使在使用框架3.5時,它也表明該版本。
很困惑,有什么想法嗎?
喬恩
最初,我認為這可能是因為要部署到的服務器沒有安裝.NET Framework 3.5SP1,而只有.NET 3.5RTM。
但是,在檢查.NET 3.5 RTM System.ServiceModel.Web.dll
程序集后,我看到實際上已定義了System.Runtime.Serialization.Json.DataContractJsonSerializer
。
編譯器警告CS1684建議在服務器的GAC中有一個System.ServiceModel.Web.dll
程序集,但沒有System.Runtime.Serialization.Json. DataContractJsonSerializer
定義了System.Runtime.Serialization.Json. DataContractJsonSerializer
。
所以我會檢查一下:
檢查部署服務器是否正在至少運行.NET 3.5 RTM,以及是否正在使用Beta版本或候選版本或未將其保留。
在Visual Studio 2008中,確保在項目屬性中選擇.NET 3.5的“目標框架”。
要查看問題是否出在服務器的框架安裝上,您可以做的最后一項檢查是打開一個簡單的應用程序以直接使用DataContractJsonSerializer
。 在MSDN文檔頁面上有該類的示例:
作為最后的選擇,如果服務器在您的控制之下,則我將卸載.NET Framework 3.5,然后從以下位置重新安裝:
更新:
根據您的評論:
如果您運行的beta是3.5,則可能是DataContractJsonSerializer
不在System.ServiceModel.Web.dll
程序集中。
我似乎還記得CTP,測試版和候選發布版本,該領域的最新變化很晚。 我隱約記得,由於JSON的日益普及和社區壓力, DataContractJsonSerializer
是這些后期添加/更改之一。 我的記憶有些模糊,但它響起了鍾聲。
要替換DLL,您需要從GAC注銷當前版本,然后使用GACUTIL.exe
工具注冊RTM版本。 我不建議您混合使用RTM和Beta位,否則您將面臨無法預料的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.