Как вызвать .NET dll в надстройке Office JavaScript? - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в 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);
    }

}

}

C # dll для теста

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

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

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

1 Ответ

0 голосов
/ 03 мая 2018

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

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

Щелкните правой кнопкой мыши Solution> Properties и выберите «Any CPU».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...