Iis 7 获取要在iis 7中加载的.dll时出现问题
我们有一个在06年编写的.dll文件,根据.NETReflector,它不是.net程序集 此.dll允许从浏览器远程运行测试,或在服务器上针对IIS运行测试。当我们的客户在Windows 2003上安装服务器时,他没有任何问题。自2008年以来,他一直无法使此功能正常工作 我的任务是找出原因 因此,tat调用此.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
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模式下运行。看起来这个已经建了一段时间了