Простой ASMX WebService и DLL не загружены - PullRequest
0 голосов
/ 17 марта 2012

У меня проблема с запуском веб-службы ASMX.Я вызываю DLL из метода (AceptaTools.dll), и эта DLL загружает ca4xml.dll.

AceptaTools.dll был зарегистрирован с REGSVR32.Но ca4xml.dll не может.

Когда я вызываю службу:

_objURL = _CA4XML.GetLastResponse();

я получаю сообщение «ca4xml.dll не загружен».

Просмотр всех зависимостейWalker:

Здесь подробно описаны оба файла: 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

1 Ответ

0 голосов
/ 17 марта 2012

Вы убедились, что 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

...