2015-11-18 140 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中具有重复的控制器,并具有独立的功能。 –