我在运行ASMX Web服务时遇到问题。我正在从一个方法(AceptaTools.dll)调用一个DLL,这个DLL加载ca4xml.dll。
AceptaTools.dll已在REGSVR32注册。但ca4xml.dll不能。
当我调用服务时:
_objURL = _CA4XML.GetLastResponse();
我收到一条消息“ca4xml.dll未加载”。
寻找依赖性沃克:
这里有两个文件:
这两个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();
}
}
}
答案 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 中更新项目