System.NotSupportedException: BinaryFormatter serialization and deserialization are disabled within this application

Environment

  • Pythonnet version:3.0.3
  • Python version:381
  • Operating System:win11
  • .NET Runtime:.NET8

Details

  • In my .NET 8 console environment, I executed a simple operation to call a Python method that returns a string. However, I encountered an error when executing PythonEngine.Shutdown().

    TODO

  • python&code:
    import json
    def return_json_string():
    data = {"message": "这是从Python返回的字符串"}
    return "{"name":"Michael"}" # 这将会是一个字符串

  • .net&code
    public static void GetStr()
    {
    Runtime.PythonDLL = @"D:\Program Files\Python312\python312.dll"; // 根据需要更改Python版本和路径
    PythonEngine.Initialize(); // 初始化Python引擎

    using (Py.GIL()) // 确保我们在Python全局解释锁(GIL)的上下文中
    {
    dynamic pyModule = Py.Import("ReturnJson"); // 导入Python方法所在文件名
    string result = pyModule.return_json_string(); // 调用函数并获取返回值

    Console.WriteLine(result);
    

    }

    PythonEngine.Shutdown(); // 关闭Python引擎
    }

    System.NotSupportedException: BinaryFormatter serialization and deserialization are disabled within this application. See https://aka.ms/binaryformatter for more information.
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
   at Python.Runtime.RuntimeData.Stash()
   at Python.Runtime.Runtime.Shutdown()
   at Python.Runtime.PythonEngine.Shutdown()