gpt4 book ai didi

PHP DOTNET() 无法从 "System"程序集加载

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:03 24 4
gpt4 key购买 nike

尝试使用位于 System 程序集中的 System.Security.Cryptography.X509Certificates 中的 Microsoft .NET 类会引发以下错误:

$certificate2 = new DOTNET('System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', 'System.Security.Cryptography.X509Certificates.X509Certificate2');

com_exception: Failed to instantiate .Net object [Unwrapped, QI for IDispatch] [0x80004002] No such interface supported in ...\test.php on line 2

而以下调用确实有效并返回 DOTCOM 实例。

$certificate = new DOTNET('mscorlib', 'System.Security.Cryptography.X509Certificates.X509Certificate');
$form = new DOTNET('System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', 'System.Windows.Forms.Form');

System.dll 或其包含在 System.Security.Cryptography.X509Certificates 中的类有什么特别之处吗?

为什么这个文件或类不能使用?

深入挖掘

异常源自 php_dotnet extension source code 中的失败方法调用,第250行。但这对我来说太低了。电话是:

hr = IUnknown_QueryInterface(V_UNKNOWN(&unwrapped), &IID_IDispatch, &V_DISPATCH(&obj->v));

边注

  • PHP 版本为 5.5.5
  • 这发生在 Windows 7 和 Windows Server 2008 R2 机器上
  • 程序集似乎可以正确访问,但找不到类
  • 选择的 .NET Framework 版本为 2.0.0.0 (<=3.5),因为 PHP DOTNET 不适用于 >= 4 的版本
  • mscorlib 的加密类不够用,因为功能有限

最佳答案

试试这个。它对我有用

<?php
$stack = new DOTNET("mscorlib", "System.Collections.Stack");
$stack->Push(".Net");
$stack->Push("Hello ");
echo $stack->Pop() . $stack->Pop();
?>

文档链接,Click here

关于PHP DOTNET() 无法从 "System"程序集加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com