【发布时间】:2023-03-29 15:26:01
【问题描述】:
我一直在尝试通过 com(使用 DOTNET())从 PHP 调用 .net 程序集。似乎 php 正在找到 DLL 并正确初始化,但由于某种原因我看不到/使用这些方法。有人知道我该如何解决这个问题吗?
这是我用来调用 .net 类的 php 代码。当我调用它时,输出是“hello1 hello2”。当我尝试通过 $csclass->ModelBuilder("","") 直接调用该函数时,我收到一个 500 服务器错误,指出它找不到该函数。
<?php
echo "hello1";
try{
$csclass = new DOTNET("ModelBuilder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1208136d23b48dc5",
"ModelBuilder.ModelBuilder2");
$class_methods = get_class_methods($csclass);
foreach ($class_methods as $method_name) {
echo "$method_name\n";
}
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo "hello2";
?>
这是我试图调用的程序集中的类(使用 .net 3.5 构建,使用强名称签名,并使用 gacutil 注册):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using OfficeOpenXml;
using System.Runtime.InteropServices;
namespace ModelBuilder
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class ModelBuilder2
{
[ComVisible(true)]
public Boolean BuildModel(String outputFileLoc,String excelTemplateFile)
{
try
{
//do stuff
return true;
}
catch (Exception e)
{
return false;
}
}
}
【问题讨论】:
-
你试过
var_dumping$classmethods吗? -
var_dump() 产生 array(0) { } ...所以看起来这些方法由于某种原因是不可见的。有什么想法吗?
标签: php .net iis-7 windows-server-2008