2015-05-06 73 views
2

的控制器匹配的類型更新:我卸載了該項目並重新執行了一次,並且它可以正常工作。未找到與名爲

我試圖創建的WebAPI,我的構建工作正常,我收到錯誤消息「沒有類型被發現,命名控制器匹配」當我嘗試去URI

這是怎麼了我的webapiconfig看起來,

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

而下面是我的控制器,

public class ClientController : ApiController 
{ 

    public List<Client> Get() 
    { 
     ICRepository repository = new CRepository(new CContext()); 

     return repository.GetAllClients().ToList(); 
    } 

,這是我的global.asax.cs文件看起來像,

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     GlobalConfiguration.Configure(WebApiConfig.Register); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
    } 
} 

我試圖瀏覽到URL「http://localhost:50662/api/client

完整的錯誤是如下,

此XML文件沒有出現有任何相關的樣式信息。文檔樹如下圖所示。 未找到與請求URI'http://localhost:50662/api/Client'匹配的HTTP資源。未找到與名爲'Client'的控制器相匹配的類型。

我的問題不同於它被標記爲重複的,問題只使用控制器,它是MVC,而我的是「ApiController」,在創建之前我已經讀過。此外,標記的答案與我在這裏的內容類似,我的問題依然存在。

任何幫助將不勝感激。我真的迷失了。

+0

[找不到與名爲'User'的控制器匹配的類型](http://stackoverflow.com/qu estions/17811142/no-type-was-found-that-matches-the-controller-named-user) –

+0

嗨傑拉德 - 我的問題不是重複的。我在打開它之前看過那篇文章。你可以重新看一下嗎? – user1345260

+0

將您的路由更改爲api/{controller}/{id}。您的路由模板不會告訴WebAPI URL的哪個部分應該包含控制器名稱。 –

回答

0

您正在調用WebApiConfig兩次。

WebApiConfig.Register(GlobalConfiguration.Configuration); 
GlobalConfiguration.Configure(WebApiConfig.Register); 

刪除其中之一。如果您使用的Web Api版本> = 2.0,則刪除第一個,否則刪除第二個。

編輯1

我覺得你的問題可能與此類似Answer

您可能會丟失一些參考庫,也可以不直接關係到你的控制器或API,但網絡API方式找到Controller,它是否遍歷應用程序引用的所有程序集,並搜索與謂詞相匹配的類型。

+0

我也這樣做過。我會更新我的帖子。但它仍然不起作用 – user1345260

+0

你有哪些ClientController.cs文件?你能確保在屬性設置爲生成操作設置來編譯這個文件。 – pjobs

+0

我刪除了,但仍然是相同的錯誤。該文件位於Controllers文件夾中,並且BuildAction設置爲編譯 – user1345260

1

我得到了同樣的錯誤:

Error><Message>No HTTP resource was found that matches the request URI 'http://localhost:53569/api/values'.</Message><MessageDetail>No type was found that matches the controller named 'values'.</MessageDetail></Error> 

通過當我在asp.net web表單應用程序中創建新的控制器默認情況下,它是這樣的:

ValuesController1 : ApiController 

我只是單純地去掉「 1「,並使其成爲:

ValuesController : ApiController 

我不知道它是一個錯誤還是什麼,但它適用於我。

+0

將ValuesController1中的控制器重命名爲ValuesController也爲我解決了這個問題。 –

0

雖然它不是你的問題的原因,我實際上是由通過Visual Studios上下文菜單添加一個新類型的類而不是控制器引起的。

生成的文件有以下結構:

class foo 
{ 
} 

我擴展了類從ApiController繼承,卻忘了將其標記爲public

這是正確的版本:

public class FooController : ApiController 
{ 
    public string Get(string name="Bar") 
    { 
     return $"Hello {name}"}; 
    } 
}