【问题标题】:[Web API]Add Web App to WCF Service solution[Web API]将 Web App 添加到 WCF 服务解决方案
【发布时间】:2016-11-21 03:17:39
【问题描述】:

我有一个与 WCF 服务和 Web API 相关的问题,步骤如下。

  1. 创建一个 WCF 服务应用程序,即 Service1.svc
  2. 右键单击该项目,然后添加 -> Web API -> Web API Controller Class

我可以像这样在 WCF 解决方案中托管 Web API 吗?我没有找到任何配置或注册 Web API 的地方,所以如果我运行这个项目,Web API 将无法正常运行。
托管 web api 的代码

    public class Service1 : IService1
    {
        public Service1()
        {
            var config = new HttpSelfHostConfiguration("http://localhost:8080");

            config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{id}",
                new { id = RouteParameter.Optional });

            using (HttpSelfHostServer server = new HttpSelfHostServer(config))
            {
                server.OpenAsync().Wait();
                Console.WriteLine("Press Enter to quit.");
                Console.ReadLine();
            }
        }

【问题讨论】:

  • 为什么要这样做?我不认为你可以在同一个项目中轻松地将 web api 和 wcf 结合起来。

标签: wcf asp.net-web-api


【解决方案1】:

不,您不能将 Web API 控制器添加到 WCF 服务项目中并期望它能够正常工作。 WCF 和 WebAPI 在对 BCL 的依赖方面几乎没有重叠。

我认为 Prashant 在他的评论中说得很有说服力:

你为什么要这样做?

您可以在同一个解决方案中同时托管 WebAPI 项目和 WCF 服务项目,但即使您可以这样做,为什么还要这样做?

如果您想通过 SOAP 和 REST 公开相同的端点,您已经可以仅使用 WCF 来做到这一点。

【讨论】:

  • 感谢您的帮助。我只是不想为 wcf 和 web api 发布两次。使用 wcf 服务,我可以直接将其托管到 IIS,并且 wei api 支持 HttpSelfHost。我尝试将上面的代码添加到 Service1 类中,在我向 wcf 发出请求后,我的 web api 将成为主机,我可以正确调用它。但是,我对这种方式有点担心,因为直到有对 wcf 服务的请求,web api 才会起作用,而且似乎每个请求都会在代码之上运行。当我托管我的 wcf 服务而不是使用构造函数时,如果有任何方法可以运行此代码,您能否与我们分享一下?
  • @Edward 我仍然不明白您为什么要同时托管两者。为什么你认为你需要两者?
  • 我认为在某些情况下您会想要这样做。例如。您有一个现有的 WCF 应用程序,并且您想添加一个接受 Json 的 Restful 服务。 WCF json 序列化程序不接受 ISO 日期,因此您需要 Newtonsoft 日期。替换默认的 JSON 序列化程序是 WCF 中的大量代码,而添加 webapi 控制器很容易:stackoverflow.com/questions/18204365/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多