ASP.NET WebAPI 中的 HttpServiceHost 等价物是啥?

Posted

技术标签:

【中文标题】ASP.NET WebAPI 中的 HttpServiceHost 等价物是啥?【英文标题】:What is the equivalent of HttpServiceHost in ASP.NET WebAPI?ASP.NET WebAPI 中的 HttpServiceHost 等价物是什么? 【发布时间】:2012-03-26 16:54:21 【问题描述】:

我想尝试this 自托管 Web 服务的示例(最初用 WCF WebApi 编写),但使用新的 ASP.NET WebAPI(它是 WCF WebApi 的后代)。

using System;
using System.Net.Http;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using Microsoft.ApplicationServer.Http;

namespace SampleApi 
    class Program 
        static void Main(string[] args) 
            var host = new HttpServiceHost(typeof (ApiService), "http://localhost:9000");
            host.Open();
            Console.WriteLine("Browse to http://localhost:9000");
            Console.Read();
        
    

    [ServiceContract]
    public class ApiService     
        [WebGet(UriTemplate = "")]
        public HttpResponseMessage GetHome() 
            return new HttpResponseMessage() 
                Content = new StringContent("Welcome Home", Encoding.UTF8, "text/plain")
            ;    
        
        

但是,要么我没有 NuGotten 正确的包,要么 HttpServiceHost 擅离职守。 (我选择了“自托管”变体)。

我错过了什么?

【问题讨论】:

This 帮助我完成了一些工作,但它看起来不像是严格的等价物。 【参考方案1】:

自托管请参考这篇文章:

Self-Host a Web API (C#)

您的示例的完整重写代码如下:

class Program 

    static void Main(string[] args) 

        var config = new HttpSelfHostConfiguration("http://localhost:9000");

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

        using (HttpSelfHostServer server = new HttpSelfHostServer(config)) 

            server.OpenAsync().Wait();

            Console.WriteLine("Browse to http://localhost:9000/api/service");
            Console.WriteLine("Press Enter to quit.");

            Console.ReadLine();
        

    


public class ServiceController : ApiController     

    public HttpResponseMessage GetHome() 

        return new HttpResponseMessage() 

            Content = new StringContent("Welcome Home", Encoding.UTF8, "text/plain")
        ;    
    

希望这会有所帮助。

【讨论】:

以上是关于ASP.NET WebAPI 中的 HttpServiceHost 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 5.0 WebAPI 中的多种身份验证方案

ASP.NET WebAPI 中的 HttpServiceHost 等价物是啥?

模型绑定不适用于 ASP.NET Core 2 WebAPI 中的 POST 请求

ASP.NET WebAPI 中的路由冲突

ASP.Net WebAPI 返回列表中的空对象

需要一些帮助来构建 asp.net 核心 webapi 中的 [HttpPost] 部分