【问题标题】:ASP.net error message when using REST starter kit使用 REST 入门工具包时出现 ASP.net 错误消息
【发布时间】:2010-03-24 15:39:42
【问题描述】:

我使用 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

很困惑,有什么想法吗?

乔恩

【问题讨论】:

    标签: asp.net iis rest asp.net-3.5 starter-kits


    【解决方案1】:

    起初我认为这可能是因为您要部署的服务器没有安装 .NET Framework 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)

    更新:

    根据您的 cmets:

    如果您运行的是 3.5 的测试版,那么DataContractJsonSerializer 可能不在System.ServiceModel.Web.dll 程序集中。

    我似乎记得在 CTP、测试版和候选发布版本中,该领域发生了最新的重大变化。我依稀记得DataContractJsonSerializer 是这些后期添加/更改之一,因为 JSON 越来越受欢迎和社区压力。我的记忆有点模糊,但它敲响了警钟。

    要替换 DLL,您需要从 GAC 注销当前版本,然后使用 GACUTIL.exe 工具注册 RTM 版本。我不建议混合 RTM 和 beta 位,你会让自己面临不可预测的行为。

    【讨论】:

    • 我知道服务器只运行 3.5 的测试版而不是 RTM,我们从未升级它,因为我们担心它会弄乱我们已经在服务器上运行的东西。我所做的是找到 System.ServiceModel.Web.dll 并将其替换为我在运行 RTM 的其他服务器之一上找到的较新版本(并且它具有更大的文件大小)。不幸的是,我仍然遇到同样的错误。
    • 我正在考虑将 hte 脚本放在较新的服务器上并从那里调用它。
    • @jonhobbs - 当你说“替换”时,你是如何替换它的?
    • 我刚刚删除了旧文件并将新文件放回原处。
    • @jobhobbs - 不幸的是,这不起作用,请参阅我对答案的更新。
    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多