Я новичок в 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 "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом".
Что я делаю неправильно? Или я должен использовать другой способ для своей задачи?
Была сделана попытка загрузить программу с неправильным форматом.
Обычно эта ошибка представляет собой проблему компиляции x86 vs x64. Попробуйте "Любой процессор".
Щелкните правой кнопкой мыши "Решение"> "Свойства" и выберите "Любой процессор".