You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio发布网站在IIS10中报“JObject未定义”错误求助

解决“Type 'JObject' is not defined”错误方案

核心问题定位

问题根源在于服务器上Newtonsoft.Json程序集未被正确识别和加载:Bin目录中无.dll扩展名的Newtonsoft.Json文件干扰了IIS对真实程序集的查找,同时GAC注册操作存在参数错误。

分步解决步骤

1. 清理Bin目录无效文件

  • 登录Windows Server Core服务器,找到网站的Bin目录
  • 删除无.dll扩展名的Newtonsoft.Json文件,避免系统将其误识别为JSON文件,干扰程序集加载流程
  • 确保Bin目录仅保留正确的Newtonsoft.Json.dll(版本13.0.3.27908)

2. 修正GAC注册操作

gacutil -l命令参数错误,正确操作如下:

  • 以管理员权限打开命令提示符
  • 切换到Newtonsoft.Json.dll所在目录,执行注册命令:
    gacutil -i Newtonsoft.Json.dll
    
  • 验证注册结果,执行查询命令(无需带.dll后缀):
    gacutil -l Newtonsoft.Json
    
    成功注册后会显示对应版本的程序集信息

3. 配置IIS网站加载设置

  • 打开IIS管理器,定位目标网站,进入高级设置
  • 确认启用32位应用程序选项与项目编译架构匹配(若项目为32位编译,需勾选此选项)
  • 重启IIS服务使配置生效:
    iisreset
    

4. 修正本地发布配置

  • 在Visual Studio中右键项目,进入属性→生成,确认目标平台与服务器架构一致(x86/x64/Any CPU)
  • 打开发布设置,选择文件系统发布方式,确保未勾选可能导致程序集丢失的异常编译选项
  • 重新发布项目到服务器,覆盖Bin目录

5. 代码层面排除冲突

确保命名空间引用无误,可尝试添加完整命名空间限定避免冲突:

Imports Newtonsoft.Json.Linq

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
        Dim json As String = New System.Net.WebClient().DownloadString("https://reqres.in/api/products/3")
        ' 使用完整命名空间限定JObject
        Dim parsejson As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(json)
        Dim thename = parsejson.SelectToken("data.name").ToString()
        txt1.Text = "Name Is " + thename
    End Sub
End Class

额外排查点

  • 确认服务器安装的.NET Framework版本与项目目标框架一致
  • 检查IIS应用程序池的.NET CLR版本配置是否匹配项目要求

内容的提问来源于stack exchange,提问作者CodingEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:22:22