2014-07-01 19 views
0

我想在Asp.Net MVC4中實現一個簡單的Breeze控制器,但似乎無法訪問它。它可能與.Net的標準Web.Api相沖突嗎?嘗試在asp.net中實現Breeze控制器mvc

如果我的網址是http://localhost:49479/api/values那麼我會從Web Api中獲得一個很好的返回值。

但是,如果我的網址是http://localhost:49479/breeze/Breeze我得到"Http 404" error "Resource not found"

如果我的網址是http://localhost:49479/breeze/Breeze/5我得到錯誤No HTTP resource was found that matches the request URI 'http://localhost:49479/breeze/Breeze/5'.

你的意見是非常感激。

下面是我在..Controllers/BreezeController.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using Breeze.ContextProvider; 
using Breeze.WebApi2; 
using Newtonsoft.Json; 

    namespace RageSys.Controllers 
    { 
    [BreezeController] 
    public class BreeezeController : ApiController 
    { 
     // GET api/values 
     public string Get(int id) 
     { 
      return "value"; 
     } 
     public IEnumerable<string> GetMtm(int id) 
     { 
      return new string[] { "value1", "value2" }; 
     } 
    } 
    } 

和BreezeWebApiConfig.cs:

using System.Web.Http; 

[assembly: WebActivator.PreApplicationStartMethod(
    typeof(RageSys.App_Start.BreezeWebApiConfig), "RegisterBreezePreStart")] 
namespace RageSys.App_Start { 
    ///<summary> 
    /// Inserts the Breeze Web API controller route at the front of all Web API routes 
    ///</summary> 
    public static class BreezeWebApiConfig { 

    public static void RegisterBreezePreStart() { 
     GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "BreezeApi", 
      routeTemplate: "breeze/{controller}/{action}" 
    ); 
    } 
    } 
} 
+1

您的控制器被命名爲Breeeze控制器3 e ... –

+0

謝謝。不過,我仍然遇到同樣的錯誤。 WebApi可能並排存在衝突嗎? –

+1

完全沒有。你的路線設置爲微風/ {控制器}/{動作},但你只能打電話給微風/ {控制器}。添加動作... –

回答

2

結果您從api/values的要求越來越不從哪裏來列出的控制器。您的項目中必須有默認的ValuesControllerWebApiConfig(它定義了一個需要參數的路徑)。

您沒有http://localhost:49479/breeze/Breeze/5的路線。第三部分(當前爲5)需要是Action方法的名稱。對你而言,這意味着GetMtm。您沒有任何參數的路線,因此除非您定義了這樣的路線,否則您將從http://localhost:49479/breeze/Breeze/GetMtm/5中得不到任何東西。雖然你可能不想這樣做,因爲Breeze與Entity Framework相結合將使生活變得非常簡單。您應該實現最簡單的Breeze/Entity Framework應用程序,並從中看到它是如何工作的。

1

如果您正在使用參數並使用Breeze,請確保您在Breeze查詢中使用.withParameters({ParameterName:「Fred」})或.withParameters({id:id-value}),例如請確保在您的函數中調用的參數名稱(您的情況下的GetMtm)與您在客戶端使用的參數名稱相匹配。

相關問題