Как вызвать .NET dll в надстройке Office JavaScript?

1

Я новичок в JavaScript. Я разрабатываю надстройку JavaScript для Office Online. Я пытаюсь вызвать.NET DLL в моей надстройке. Я создал в проекте Visual Studio "Приложение для Office", создал надстройку JavaScript для тестирования и попытался использовать jQuery ajax для использования.NET dll.

Код Javascript для теста:

    (function () {
    "use strict";

    // The initialize function must be run each time a new page is loaded
    Office.initialize = function (reason) {
        $(document).ready(function () {
            app.initialize();

            $('#update-stocks').click(updateStocks);
        });
    };

    function updateStocks() {
        Excel.run(function (ctx) {

            function CallHandlerSync(inputUrl, inputdata) {
                $.ajax({
                    url: inputUrl,
                    contentType: "application/json; charset=utf-8",
                    data: inputdata,
                    async: false,
                    success: function (result) {
                        var objResult = $.parseJSON(result);
                        app.showNotification(objResult.Total);
                    },
                    error: function (e, ts, et) {
                        app.showNotification("Error...");
                    }
                });
            }

            var number1 = 10;
            var number2 = 20;
            CallHandlerSync("Handler.ashx?RequestType=AddNum", { 'number1': number1, 'number2': number2 });

        }).catch(function (error) {
            app.showNotification("Error", error);
        })
    }  
})();

Код в Handler.ashx

public class Handler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)

    {
        context.Response.ContentEncoding = System.Text.Encoding.UTF8;
        context.Response.ContentType = "text/html";

        var strResult = string.Empty;

        switch (context.Request.QueryString["RequestType"].Trim())
        {
            case "AddNum":
                strResult = this.AddNumber(
                        Convert.ToInt32(context.Request["number1"]),
                        Convert.ToInt32(context.Request["number2"]));
                break;
        }
        context.Response.Write(strResult);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

    public string AddNumber(int number1, int number2)
    {
        int total = 0;

        ClassLibrary1.Class1 sampleLib = new ClassLibrary1.Class1();
        total = sampleLib.Add(number1, number2);

        var jsonData = new
        {
            Total = total
        };
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

        return javaScriptSerializer.Serialize(jsonData);
    }

}

}

С# dll для тестирования

public class Class1
{
    public int Add(int X, int Y)
    {
        return X + Y;
    }
}

Этот код компилируется Ok. Но когда я запускаю программу, я получаю ajax-ошибку. Я отвечаю "Не удалось загрузить файл или сборку" ClassLibrary1 "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом".

Что я делаю неправильно? Или я должен использовать другой способ для своей задачи?

  • 1
    Была предпринята попытка загрузить программу с неверным форматом ». - обычно это проблема компиляции x86 против x64. Попробуйте «Любой процессор».
  • 1
    Спасибо тебе большое! Я попробовал "Любой процессор" и программа работает!
Теги:
office365

1 ответ

1
Лучший ответ

Была сделана попытка загрузить программу с неправильным форматом.

Обычно эта ошибка представляет собой проблему компиляции x86 vs x64. Попробуйте "Любой процессор".

Щелкните правой кнопкой мыши "Решение"> "Свойства" и выберите "Любой процессор".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню