Member 12926744 Ответов: 1

Была предпринята попытка загрузить программу с неверным форматом.(исключение из HRESULT: 0x8007000b)


Всем Привет,
Я пытался прочитать emirates id с помощью кард-ридера после этого блога href="https://www.codeproject.com/Articles/1265249/Read-Emirates-ID-in-a-Web-Application">прочитайте Emirates ID в веб-приложении. Однако я получал ошибку
"Была предпринята попытка загрузить программу с неправильным форматом" при запуске консольного приложения в строке "readerManager.EstablishContext()".
Я перепробовал все решения в интернете, но мне ничего не помогло . Кто-нибудь может мне помочь, пожалуйста . Любая помощь будет очень признательна . Заранее спасибо.

Что я уже пробовал:

программы.в CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;

namespace EIDSampleConsole
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            var model = Controller.CreateFromEIDReader();
            if (model.HasData)
            {
                Clipboard.SetText(Newtonsoft.Json.JsonConvert.SerializeObject(model));
            }
            else
                Clipboard.SetText("NO DATA");
        }
    }
}


контроллер.в CS

using EmiratesId.AE.PublicData;
using EmiratesId.AE.ReadersMgt;
using EmiratesId.AE.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EIDSampleConsole
{
    public class Controller
    {
        public static EIDModel CreateFromEIDReader()
        {
            EIDModel model = new EIDModel();
            ReaderManagement readerManager;
            PCSCReader reader;
            try
            {
                
                readerManager = new ReaderManagement();
                readerManager.EstablishContext();
                readerManager.DiscoverReaders();
                //System.Windows.Forms.MessageBox.Show("after reader discover");
                if (readerManager.Readers.Length > 0)
                {
                    reader = readerManager.Readers[0];
                    if (reader.IsConnected())
                    {
                        //System.Windows.Forms.MessageBox.Show("after connection to reader, before getting data");
                        PublicDataFacade pDataFacade = reader.GetPublicDataFacade();
                        CardHolderPublicData pData = pDataFacade.ReadPublicData(true, true, true, true, false);
                        CardHolderPublicDataEx pDataEx = pDataFacade.ReadPublicDataEx(true, false, true, true, false, true, true, true);

                        model.EIDNumber = Utils.ByteArrayToUTF8String(pData.IdNumber);
                        model.Phone = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.ResidentPhoneNumber);
                        model.Mobile = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.MobilePhoneNumber);
                        model.Email = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.Email);
                        model.Pobox = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.POBox);
                        model.Emirate = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.EmirateDescriptionEnglish);
                        model.City = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.CityDescriptionEnglish);
                        model.Area = Utils.ByteArrayToUTF8String(pDataEx.HomeAddress.AreaDescriptionEnglish);

                        model.Sex = Utils.ByteArrayToUTF8String(pData.Sex);
                        model.Occupation = Utils.ByteArrayToUTF8String(pData.Occupation);
                        model.Occupation = Utils.ByteArrayToUTF8String(pDataEx.OccupationEnglish);
                        model.Occupation = Utils.ByteArrayToUTF8String(pDataEx.OccupationArabic);
                        model.Occupation = Utils.ByteArrayToUTF8String(pDataEx.OccupationTypeEnglish);
                        model.Occupation = Utils.ByteArrayToUTF8String(pDataEx.OccupationTypeArabic);

                        model.ResidencyType = Utils.ByteArrayToHex(pData.ResidencyType, "");
                        model.DOB = Utils.ByteArrayToStringDate(pData.DateOfBirth).Replace("/", "-");

                        model.ResidencyExpiry = Utils.ByteArrayToStringDate(pData.ResidencyExpiryDate);
                        model.Name = RemoveComma(Utils.ByteArrayToUTF8String(pData.FullName));
                        model.NameAr = RemoveComma(Utils.ByteArrayToUTF8String(pData.ArabicFullName));

                        model.Title = Utils.ByteArrayToUTF8String(pData.Title);
                        model.TitleAr = Utils.ByteArrayToUTF8String(pData.ArabicTitle);
                        model.NationalityID = (Utils.ByteArrayToUTF8String(pData.Nationality));
                        model.PassportNumber = Utils.ByteArrayToUTF8String(pDataEx.PassportNumber);

                        model.SponsorType = Utils.ByteArrayToHex(pData.SponsorType, "");
                        model.SponsorNumber = Utils.ByteArrayToHex(pData.SponsorNumber, "");
                        model.SponsorName = Utils.ByteArrayToUTF8String(pData.SponsorName);
                        model.CompanyName = Utils.ByteArrayToUTF8String(pDataEx.CompanyNameEnglish);
                        if (pData.ResidencyNumber != null)
                            model.ResidencyNumber = Utils.ByteArrayToUTF8String(pData.ResidencyNumber).Trim();

                        model.PhotoPath = @"C:\Temp\EID_PHO_" + model.EIDNumber.Replace(" ", "").Trim() + ".jpg";
                        model.Photo = pData.Photography;
                        if (pData.Photography != null)
                        {
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(pData.Photography);
                            System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
                            image.Save(model.PhotoPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }

                        model.Signature = pDataEx.HolderSignatureImage;
                        if (pDataEx.HolderSignatureImage != null)
                        {
                            System.IO.MemoryStream ms = new System.IO.MemoryStream(pDataEx.HolderSignatureImage);
                            System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
                            image.Save(@"C:\Temp\EID_SIG_" + model.EIDNumber.Replace(" ", "").Trim() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        model.HasData = true;
                    }

                }

            }
            catch (Exception ex)
            {
                model.HasData = false;
                Console.WriteLine("ERROR: " + ex.Message);
            }
            return model;
        }
        public static string RemoveComma(string value)
        {
            string result = "";
            string[] valuelist = value.Split(new Char[] { ',' });
            foreach (string v in valuelist)
            {
                if (v.Trim().Length > 0)
                    result += v.Trim() + " ";
            }
            return result.Trim();
        }
    }
}

Richard Deeming

Эта ошибка обычно предполагает, что вы пытаетесь загрузить 32-разрядную сборку в 64-разрядное приложение или наоборот.

F-ES Sitecore

Вы погуглили ошибку и прошли через обычные причины этой проблемы?

Member 12926744

Перепробовал все в google, но ничего не смогло решить эту проблему .

Richard MacCutchan

Попробуйте воспользоваться форумом сообщений в конце статьи. Может быть, автор сможет помочь.

1 Ответов

Рейтинг:
1

OriginalGriff

Проверьте настройки приложения: если ваше приложение работает как 32-битное приложение, оно не может загрузить 64-битные EXE-или DLL-сборки, и вы получите ошибку: точно так же вы получите ту же проблему, пытаясь загрузить 32-битную сборку в 64-битное приложение.

Посмотрите на панель инструментов в верхней части страницы VS: рядом с выпадающим списком "Debug / Release" находится селектор "Platforms" - попробуйте изменить его с помощью выпадающего списка "Environment manager". Если вы найдете версию, которая работает, вы можете проверить, доступна ли другая версия для вашей предпочтительной платформы.


Member 12926744

Я попробовал перейти на X64 , x86 ,любой процессор.Но ничего не помогает .