2015-11-18 137 views
-2

所有鏈接我找到了在mvc項目中使用Web API的說法。在web api項目中使用asp.net mvc

但我想要的是相反的。

我找不到有關該場景的任何信息,以及如何將mvc集成到web api項目中。

有沒有可能?

+0

你能解釋一下爲什麼要混合它們嗎?也許你想要達到的一個實際例子會有所幫助? –

+0

假設您的Web API託管在IIS中,您可以絕對將它們放在同一個項目中。即使你是自我託管,你仍然可以。這是通過谷歌搜索「web api mvc same project」來完成的。每個結果都會談到如何做到這一點。 – Amy

+0

儘管這當然有可能,但我想問的問題是:爲什麼?爲什麼你想讓自己變得很難,如果你可以讓它變得容易。當你創建一個MVC應用程序時,Visual Studio會爲你做很多事情。如果你選擇忽略這一點,你必須自己完成所有這些步驟(比如啓動應用程序,配置路由,過濾器......) – hbulens

回答

0

我是從一個空ASP.Net項目設置使用Web API啓動這些指令。

  1. 安裝Microsoft.AspNet.Mvc Nuget包。

  2. Set up MVC routes以及您的global.asax中配置Web API的任何其他MVC配置。如果您願意,您可以在單獨的課程中完成此配置並從global.asax中調用它。

實施例:

RouteTable.Routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
  • 一個MVC控制器添加到一個controllers文件夾。這應該是一個包含Web API控制器的獨立文件夾,不必稱爲controllers

  • 創建一個Views文件夾。爲了使這更容易,更省時,在一次性解決方案中創建一個MVC項目並將其Views文件夾複製過來。特別是,您想複製Views文件夾內Views\Shared文件夾中的所有文件以及所有.config文件。沒有這些,你的MVC視圖將不起作用。

  • 如果您爲#4創建了一次性項目,請查看其web.config,特別是在<system.web>設置。

  • 如果你沒有,這裏是我的一部分:

    <system.web> 
        <authentication mode="None" /> 
        <compilation debug="true" targetFramework="4.5.2" /> 
        <httpRuntime targetFramework="4.5.2" /> 
    </system.web> 
    

    你現在應該有MVC的ASP.Net項目旁邊的Web API工作。

    對於更多的組織,您可以創建一個MVC Area。要開始使用,您不需要區域,如果稍後決定添加區域,則可以輕鬆將現有的MVC代碼移動到一個或多個新區域。請參閱this blog post by David Paquette。是的,這篇文章是關於Web窗體的,但是說明和概念是一致的。另外,Web Forms就像Web API一樣,只是一個ASP.Net項目,帶有Web Forms

    -1

    這很簡單,我在幾個網站上使用它 - 創建一個新的區域(我使用'UI')並將其視爲一個簡單的MVC網站。

    您必須按照該解決您的默認路由:Multiple types were found that match the controller named 'Home'

    +1

    創建區域不是必需的。 – Amy

    +0

    當然不是必需的,但有用的是,它允許您在WebAPI和UI中具有重複的控制器,並具有獨立的功能。 –