C# .Net核心控制台应用程序中的Http侦听器?
我开始研究.net内核,我有点迷路了 我正在尝试创建一个控制台应用程序,它接受Http请求,就像HttpListener一样,但它不存在于.NETCore上 我已经搜索了很多,只发现一些帖子的引用它将不存在 那么,我的问题是,是否可以在.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方法中,您可以看到它
干杯。要构建自托管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的工作原理,你应该添加回复内容和一个链接,指向你获取信息的地方。你应该加上这个