简单的ASMX WebService和DLL未加载

时间:2012-03-17 10:46:43

标签: c# asp.net web-services dll asmx

我在运行ASMX Web服务时遇到问题。我正在从一个方法(AceptaTools.dll)调用一个DLL,这个DLL加载ca4xml.dll。

AceptaTools.dll已在REGSVR32注册。但ca4xml.dll不能。

当我调用服务时:

_objURL = _CA4XML.GetLastResponse();

我收到一条消息“ca4xml.dll未加载”。

寻找依赖性沃克:

这里有两个文件: enter image description here

这两个DLL都在BIN文件夹中,我的项目运行为x86 ...为什么无法加载?请帮忙。

[WebMethod]

public string Send(string Ip, string Puerto, string NroDocumento, string TipoDocumento, string Comando, string Impresora, string Linea)
{
    try
    {
        int _Result = 0;
        string _Null = "";
        string _objURL;

        //Config Capsula
        string serverConfig = "cfg|" + Ip.ToString() + "|" + Puerto.ToString() + "|10";

        //Impresora FACTURA,1 por Defecto.
        if (string.IsNullOrEmpty(Impresora)) { Impresora = "FACTURA,1"; }
        if (string.IsNullOrEmpty(NroDocumento)) { NroDocumento = "0"; }
        if (string.IsNullOrEmpty(Comando)) { Comando = "generar"; }

        //Nuevo CAXML Cliente
        AceptaTools.CA4XML_Client _CA4XML = new CA4XML_Client();

        _Result = _CA4XML.Send(ref serverConfig, ref NroDocumento, ref Comando, ref Impresora, ref Linea, out _Null);


        if (_Result != 0)
        {
            _objURL = _CA4XML.GetLastResponse(); //Get URL
            return _objURL.ToString();
        }
        else
        {
            return "Error";
        }


    }
    catch (Exception ex)
    {
        return ex.Message.ToString();
    }
}

}

enter image description here

2 个答案:

答案 0 :(得分:0)

您确定ca4xml.dll已正确部署吗?由于我猜它没有被引用为.NET程序集,因此VS会将其视为普通文件,您需要在部署时明确告诉VS包含它。

执行以下步骤以检查部署是否已正确设置:

打开解决方案资源管理器 - >到了ca4xml.dll - >右键单击 - >选择Properties - >设置Build Action = None& Copy to Output = Always

除了Dependency Walker我还建议使用Process Monitor。当您使用文件访问视图(忽略注册表更改等)时,您可以看到进程尝试从中加载dll的所有位置。之后,您可以确保您缺少的DLL位于列出的位置之一,这是链接:
http://technet.microsoft.com/en-us/sysinternals/bb896645

答案 1 :(得分:0)

当您因为需要更新某些东西而没有在程序中加载 DLL 时。 您可以在 nuget manager 中更新项目