【问题标题】:Windows Service Exception - Could not load file or assembly Newtonsoft.JsonWindows 服务异常 - 无法加载文件或程序集 Newtonsoft.Json
【发布时间】:2014-12-09 08:12:14
【问题描述】:

我在我的 Windows 服务项目中使用 Newtonsoft.Json

我的Newtonsoft.Json 版本是6.0.0.0,我在我的项目参考中引用了它。

安装和编译顺利进行。但是当我从Services 开始我的服务时,它会抛出一个异常:

无法加载文件或程序集'Newtonsoft.Json,版本=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其之一 依赖关系。系统找不到指定的文件。

我还搜索了网络并在我的app.config 文件中添加了以下内容:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>
</runtime>

但仍然出现同样的错误。

我做错了什么?

【问题讨论】:

  • 这里可能对您有所帮助:weblog.west-wind.com/posts/2014/Nov/29/…
  • @DavidBrabant 我试过了,但没有帮助。
  • 您使用 Newtonsoft.Json 的目的是什么?
  • @firefalcon 我想将我的数组转换为 json 并通过 Web 请求发送。

标签: c# json windows-services json.net


【解决方案1】:

如果您打算将数组转换为 Json,则无需使用外包的 dll。 VS 2010 有JavaScriptSerializer 来处理这个任务。

示例如下:

using System.Web.Script.Serialization;

JavaScriptSerializer js = new JavaScriptSerializer();
var json = js.Serialize(strYourArrayString);

【讨论】:

    【解决方案2】:

    可能问题与启动目录有关(GAC 中是“Newtonsoft.Json”吗?)。 您可以尝试在服务上设置目录,但我放弃了。

    实际上,我为非 Microsoft 引用的程序集设置了始终复制本地,并且我使用类似于此的源代码 How to add folder to assembly search path at runtime in .NET?

    【讨论】:

    • 你可以把它放在Main()中。它解决了每个未找到的程序集异常。
    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2012-03-14
    • 1970-01-01
    • 2011-09-04
    • 2015-12-23
    相关资源
    最近更新 更多