Iis 7 获取要在iis 7中加载的.dll时出现问题

Iis 7 获取要在iis 7中加载的.dll时出现问题,iis-7,Iis 7,我们有一个在06年编写的.dll文件,根据.NETReflector,它不是.net程序集 此.dll允许从浏览器远程运行测试,或在服务器上针对IIS运行测试。当我们的客户在Windows 2003上安装服务器时,他没有任何问题。自2008年以来,他一直无法使此功能正常工作 我的任务是找出原因 因此,tat调用此.dll的区域为: Spy.prototype.SendCommand = function( command ) { var xmlDoc = null; v

我们有一个在06年编写的.dll文件,根据.NETReflector,它不是.net程序集

此.dll允许从浏览器远程运行测试,或在服务器上针对IIS运行测试。当我们的客户在Windows 2003上安装服务器时,他没有任何问题。自2008年以来,他一直无法使此功能正常工作

我的任务是找出原因

因此,tat调用此.dll的区域为:

Spy.prototype.SendCommand = function( command )
    {
    var xmlDoc = null;

    var url = this.urlBase + command;

    if( "" != this.commandCode )
        {
        url += "&code=" + this.commandCode;
        }

    try
        {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = false;
        var rc = xmlDoc.load( url );

        if( 4 == xmlDoc.readyState )
            {
            var err = xmlDoc.parseError;
            if (err.errorCode != 0)
                {
                LogError( "parsing error: " + err.reason );
                xmlDoc = null;
                }
            }
        else
            {
            LogError( "unable to load: " + url );
            xmlDoc = null;
            }
        }
    catch( e )
        {
        LogError( e.description );
        xmlDoc = null;
        }

    return xmlDoc;
    }
因此:

Spy.prototype.AcquireControl = function( useForceIfNecessary )
{
var success = false;
var xmlDoc = this.SendCommand( "acquire" );
var state = this.ProcessState( xmlDoc );
if( null != state )
    {
    success = ( "" != this.commandCode );
    if( !success && useForceIfNecessary )
        {
        // Unable to acquire control so applying force.

        xmlDoc = this.SendCommand( "acquire/force" );
        state = this.ProcessState( xmlDoc );
        if( null != state )
            {
            success = ( "" != this.commandCode );
            if( !success )
                {
                LogError( "unable to acquire control of spy" );
                }
            }
        else
            {
            LogError( "No response from spy (with force)." );
            }
        }
    }
else
    {
    LogError( "No response from spy (without force)." );
    }

return success;
}
返回的是来自xmldocument的解析错误

传递的URL是根文件夹,其中包含dll的名称,还有命令“acquire”,它是.dll的一个内部命令,就我所知

有人遇到过这样的奇怪问题吗?我已经查看了安全设置,并确保脚本/执行允许。我确实安装了与iis 6.0的兼容性

这可能只是在更新的服务器上调用一个非常旧的dll吗?如果是这样,我将如何解决/修复此问题

我无法访问dll上的源代码。我能够用hopper对其进行反编译,这使我了解到传递的命令“acquire”,“acquire/force”是.dll的内部命令

当我尝试直接从浏览器转到此.dll而不是通过代码时,我收到以下错误:

HTTP错误500.0

详情如下:

模块IsapiModule 通知ExecuteRequestHandler 处理程序ISAPI dll 错误代码0x8007007f 请求的URL/mymachine:80/ourwebap/ourdll.dll/acquire 物理路径C:\Program Files x86\our folder\ourwebappp\www\ourdll.dll\acquire 登录方式协商 登录用户**

如果从输入的url请求中删除\acquire开关,则会收到相同的错误


有什么想法吗?

显然,问题在于dll本身

根据这篇文章:

IIS需要dll才能进行以下导出:

GetExtensionVersion HttpExtensionProc 终端扩展

我们的DLL没有这些导出。唯一的一个 GetFilterVersion HttpFilterProc

因此,此dll和问题将无法在IIS7中运行。在6上运行时,在查看支持历史记录后,站点必须在5.0模式下运行。看起来这个已经建了一段时间了