Asp.net-Mvc

在 WCF 項目中設置 Web API

  • August 30, 2017

我有一個“奇怪的練習”問題。我們項目架構的要求是在 WCF 項目中使用(如果可能)所有 MVC 優點設置 Web API。這意味著 WCF 和 Web API Web 服務將在一個項目中相互支持。

這甚至可行嗎?我試了一下,發現即使合併兩個項目的 Web 配置也非常困難。

感謝您的建議和意見,

雅各布

我按照以下步驟操作,效果很好:

  1. 確保您的 WCF 服務正常工作。
  2. 通過Nuget 包管理器將 WebAPI 安裝到您的項目中

安裝包 Microsoft.AspNet.WebApi

  1. 創建 Controller 文件夾並編寫您的控制器類和方法。
  2. 創建 global.asax 文件
  3. 在Application_Start方法中為您的服務註冊路由。
protected void Application_Start(object sender, EventArgs e)
{ 
   RegisterRoutes(RouteTable.Routes);
}

private void RegisterRoutes(RouteCollection routes)
{
   routes.MapHttpRoute(

        "webapi_route",

         "/{controller}/{action}/{id}",

        new { controller = "controller_name", action = "method_name", id = RouteParameter.Optional }

  );

   RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(service_name)));
}

事實上,在同一個項目中使用這兩種技術並沒有太大的限制。預設情況下,wcf 具有與 asp.net 不同的“管道”,但在此之前可以更改。使用 web.config 中的以下配置,可以將 wcf 配置為使用相同的 asp.net 管道,從而共享請求對象的整個生命週期。但不要相信這種方法適用於所有情況,需要考慮其他因素來做出決定,例如,您打算如何分發您的應用程序?當您發布一個 wcf 版本時,您也將發布 web.api,在許多情況下您可能不想要這個結果。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

引用自:https://stackoverflow.com/questions/18204365