2016-09-27 69 views
-1

我跟着this article添加web服務到我的office 365加載項。但是,當我執行發送請求的ajax腳本時,它總是以.fail語句結束。我看不到程序在控制器類或Global.asax或webApiConfig類中執行一行。使用ASP.NET web api添加一個web服務的辦公室加載項

這是我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", 
      }; 
     } 
    } 
} 

有人可以幫我解決這個問題呢?

+0

在'.fail'中檢查'status'的值。它可能包含非常有用的信息。 –

回答

1

只看代碼,沒有東西跳出來顯然是錯的。但我可以給你一些關於如何去調試的建議。

首先,嘗試在Office外接程序的上下文外進行調試。沒有什麼「附加」 - 關於它。因此,只需在Internet Explorer中啓動您的html頁面,或者更好地使用Fiddler發出請求。結果應該說明加載項內出現了什麼問題。

+0

Michael Zlatkovsky:謝謝你的建議。我得到的響應爲 {「Message」:「沒有找到與請求URI相匹配的HTTP資源https:// localhost:44331/api/GetStyles'。」,「MessageDetail」:「沒有找到匹配的類型名爲「GetStyles」的控制器。「}。 但是你可以看到我的控制器類中有一個名爲「GetStyles」的方法。你有什麼主意嗎? –

+0

您提到了「Global.asax或webApiConfig類」。他們呢? –

+0

感謝您的回覆。我發現了這個問題。控制器名稱應該以我們發送reequest的控制器方法名稱開始。在這裏我們用來發送請求的控制器方法的例子是GetStyles。所以控制器名稱應該是GetStylesController。這解決了我的問題 –