Javascript 使用ASP.NET web api为office加载项添加web服务

Javascript 使用ASP.NET web api为office加载项添加web服务,javascript,asp.net-web-api,ms-word,office365,office-addins,Javascript,Asp.net Web Api,Ms Word,Office365,Office Addins,我已遵循将web服务添加到office 365加载项的步骤。但当我执行发送请求的ajax脚本时,它总是以.fail语句结束。在控制器类、Global.asax或webApiConfig类中,我甚至看不到程序执行一行 这是我的javasript代码片段 function GetStyles(ooxml) { var data = { xml: ooxml }; $.ajax({ url: 'api/GetStyles', ty

我已遵循将web服务添加到office 365加载项的步骤。但当我执行发送请求的ajax脚本时,它总是以.fail语句结束。在控制器类、Global.asax或webApiConfig类中,我甚至看不到程序执行一行

这是我的javasript代码片段

function GetStyles(ooxml) {
    var data = {
        xml: ooxml
    };
    $.ajax({
        url: 'api/GetStyles',
        type: 'GET',
        data: data,
        contentType: 'application/json;charset=utf-8'
    }).done(function (data) {
        showNotification(data.Status, data.Message);
    }).fail(function (status) {
        showNotification('Error', 'Could not communicate with the server.');
    }).always(function () {
        // $('.disable-while-sending').prop('disabled', false);
    });
}
这是控制器类

public class WriterController : ApiController
{
    public class FeedbackRequest
    {
        public string xml;
    }

    public class FeedBackResponse
    {
        public string status;
        public string message;
    }

    [HttpGet()]
    public FeedBackResponse GetStyles(FeedbackRequest request)
    {
        try
        {
            return new FeedBackResponse
            {
                status = "success",
                message = "success success",
            };
        }
        catch (Exception e)
        {
            return new FeedBackResponse
            {
                status = "error",
                message = "error error",
            };
        }
    }
}

有人能帮我解决这个问题吗?

只要看看代码,就没有什么明显的错误了。但是我可以给你一些关于如何调试的建议


首先,尝试在Office外接程序的上下文之外对此进行调试。它没有任何“附加项”-y。因此,只需在Internet Explorer中启动html页面,或者更好的是,使用Fiddler发出请求。结果应该会揭示外接程序中的错误。

只要看看代码,就不会有明显的错误。但是我可以给你一些关于如何调试的建议


首先,尝试在Office外接程序的上下文之外对此进行调试。它没有任何“附加项”-y。因此,只需在Internet Explorer中启动html页面,或者更好的是,使用Fiddler发出请求。结果应能说明外接程序中的错误。

检查
中的
状态
值。失败
。它可能包含非常有用的信息。请检查
.fail
中的
status
的值。它可能包含非常有用的信息。迈克尔·兹拉特科夫斯基:谢谢你的建议。我得到的响应是{“Message”:“未找到与请求URI匹配的HTTP资源”,未找到与名为“GetStyles”的控制器匹配的类型。但是您可以看到在我的控制器类中有一个名为“GetStyles”的方法。你有什么想法吗?你提到了“Global.asax或webApiConfig类”。他们呢?谢谢你的回复。我发现了问题。控制器名称应以控制器方法名称开头,以便发送重新请求。例如,在这里,我们用来发送请求的控制器方法是GetStyles。所以控制器名称应该是GetStylesController。这解决了我的问题很高兴你找到了答案!迈克尔·兹拉特科夫斯基:谢谢你的建议。我得到的响应是{“Message”:“未找到与请求URI匹配的HTTP资源”,未找到与名为“GetStyles”的控制器匹配的类型。但是您可以看到在我的控制器类中有一个名为“GetStyles”的方法。你有什么想法吗?你提到了“Global.asax或webApiConfig类”。他们呢?谢谢你的回复。我发现了问题。控制器名称应以控制器方法名称开头,以便发送重新请求。例如,在这里,我们用来发送请求的控制器方法是GetStyles。所以控制器名称应该是GetStylesController。这解决了我的问题很高兴你找到了答案!