簡體   English   中英

使用REST入門工具包時的ASP.net錯誤消息

[英]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文檔頁面上有該類的示例:

DataContractJsonSerializer類(MSDN)

作為最后的選擇,如果服務器在您的控制之下,則我將卸載.NET Framework 3.5,然后從以下位置重新安裝:

Microsoft .NET Framework 3.5 Service Pack 1(完整安裝)

更新:

根據您的評論:

如果您運行的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM