C# .Net核心控制台应用程序中的Http侦听器?

C# .Net核心控制台应用程序中的Http侦听器?,c#,.net,httprequest,.net-core,httplistener,C#,.net,Httprequest,.net Core,Httplistener,我开始研究.net内核,我有点迷路了 我正在尝试创建一个控制台应用程序,它接受Http请求,就像HttpListener一样,但它不存在于.NETCore上 我已经搜索了很多,只发现一些帖子的引用它将不存在 那么,我的问题是,是否可以在.net核心控制台应用程序中接受Http请求 如果是,是哪一类 干杯。要构建自托管web应用程序,请通过新项目->模板->web->ASP.NET核心web应用程序使用VS2015中安装的模板 此向导将创建自托管的web应用程序。从条目Main方法中,您可以看到它

我开始研究.net内核,我有点迷路了

我正在尝试创建一个控制台应用程序,它接受Http请求,就像HttpListener一样,但它不存在于.NETCore上

我已经搜索了很多,只发现一些帖子的引用它将不存在

那么,我的问题是,是否可以在.net核心控制台应用程序中接受Http请求

如果是,是哪一类


干杯。

要构建自托管web应用程序,请通过
新项目->模板->web->ASP.NET核心web应用程序使用VS2015中安装的模板

此向导将创建自托管的web应用程序。从条目
Main
方法中,您可以看到它使用
WebHostBuilder
,向其添加配置(尤其是
。UseKestrel
指示web服务器),并运行它

除了模板之外,您还可以构建自己的简单web服务器。在
Startup.cs
中的
Configure
方法中,您可以使用

app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!");
});
它允许您处理请求上下文并响应它


有关更多详细信息,请选中。

要构建自托管web应用程序,请通过
新建项目->模板->web->ASP.NET核心web应用程序使用VS2015中安装的模板

此向导将创建自托管的web应用程序。从条目
Main
方法中,您可以看到它使用
WebHostBuilder
,向其添加配置(尤其是
。UseKestrel
指示web服务器),并运行它

除了模板之外,您还可以构建自己的简单web服务器。在
Startup.cs
中的
Configure
方法中,您可以使用

app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!");
});
它允许您处理请求上下文并响应它


有关更多详细信息,请查看。

我正在交叉链接到2017年5月13日的另一个答案,该答案似乎有关于此主题的更新答案:


据说要使用“.NET Core 2.0”,它有一个跨平台的功能“

我正在交叉链接到2017年5月13日的另一个答案,该答案似乎对这个主题有一个更新的答案:


据说要使用“.NET Core 2.0”,它有一个跨平台工作的“

播放下面的代码:

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        const int timeoutInDays = 1;
        Stream dataStream;
        StreamReader reader;

        while(true)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.Timeout = TimeSpan.FromDays(timeoutInDays);

                dataStream = await httpClient.GetStreamAsync("https://localhost:5001/api/v1/customers/streaming");

                reader = new StreamReader(dataStream);
                Console.WriteLine(await reader.ReadLineAsync());
                reader.Close();
            }
        }
    }

}

玩下面的代码:

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        const int timeoutInDays = 1;
        Stream dataStream;
        StreamReader reader;

        while(true)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.Timeout = TimeSpan.FromDays(timeoutInDays);

                dataStream = await httpClient.GetStreamAsync("https://localhost:5001/api/v1/customers/streaming");

                reader = new StreamReader(dataStream);
                Console.WriteLine(await reader.ReadLineAsync());
                reader.Close();
            }
        }
    }

}


您可以从.Net Core使用System.Net.Http中的HttpClient发送Http请求和接收Http响应。我不想做Http请求,我想接收它们。您可以自己使用Sockets/TcpListener实现HttpListener。@ShawnMclean不,没有,您必须使用Kestrel。但这是值得的,速度是惊人的。此外,您不需要使用完整的kestrel管道,这就是我所做的,只要进入应用程序即可。在您检索上下文并使用上下文的地方运行,以编写响应,最后的功能与HttpListener完全相同。@ShawnMclean澄清一下,在应用程序的Configure函数中,您获得应用程序,然后执行
app.Run(异步(上下文)=>{/*无论什么*/})以这种方式忽略所有管道,只有您的函数处理请求和响应。您可以使用System.Net.Http中的HttpClient从.Net Core发送Http请求和接收Http响应。我不想执行Http请求,我想接收它们。你可以自己用Sockets/TcpListener实现一个HttpListener。@ShawnMclean不,没有,你必须用Kestrel。但这是值得的,速度是惊人的。此外,您不需要使用完整的kestrel管道,这就是我所做的,只要进入应用程序即可。在您检索上下文并使用上下文的地方运行,以编写响应,最后的功能与HttpListener完全相同。@ShawnMclean澄清一下,在应用程序的Configure函数中,您获得应用程序,然后执行
app.Run(异步(上下文)=>{/*无论什么*/})以这种方式忽略所有管道,只有您的函数处理请求和响应。我不想要web应用程序,我想要创建一个接收http请求的控制台应用程序,我不想要使用ASP.net,只需要HttpListener之类的普通http请求。不,它是ASP.net核心web应用程序,控制台应用程序在Templates->.NETCore->console应用程序下。@Gusman为什么不自己试试呢?模板仅帮助您添加依赖项,生成示例代码。它在windows中编译为
.exe
,可以通过命令行运行,而不是通过web服务器加载
dll
。控制台应用程序实际上是.dll文件,不是exe文件,您可以检查它。。。另外,我不想使用Asp环境,我只想接收简单的HTTP请求,但我开始认为MS只是想强迫我们使用Asp.net,这是不可能的。。。好主意,@Gusman女士,那么如何判断应用程序是控制台应用程序还是web?我不想要web应用程序,我想创建一个接收http请求的控制台应用程序,我不想使用ASP.net,只是像HttpListener这样的普通http请求。不,这是一个ASP.net核心web应用程序,控制台应用程序在Templates->.NETCore->console应用程序下。@Gusman为什么不自己试试呢?模板仅帮助您添加依赖项,生成示例代码。它在windows中编译为
.exe
,可以通过命令行运行,而不是通过web服务器加载
dll
。控制台应用程序实际上是.dll文件,不是exe文件,您可以检查它。。。另外,我不想使用Asp环境,我只想接收简单的HTTP请求,但我开始认为MS只是想强迫我们使用Asp.net,这是不可能的。。。好主意,@Gusman女士,那么如何判断一个应用程序是控制台应用程序还是web应用程序呢?你应该把它作为一个真实的答案添加进去,添加信息和你在哪里使用过它的引用。否则它肯定会被删除。你只发布了一个链接,这不是StackOverflow的工作原理,你应该添加回复内容和一个链接,指向你获取信息的地方。你应该加上这个