- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在网上看到各种关于构建 .NET Core 控制台应用程序和构建 ASP.NET Core 应用程序的教程,但我没有找到关于构建 .NET Core 控制台应用程序的内容,该应用程序从控制台输出开始但也包含一个 ASP.NET 网络应用程序。在这种情况下,我正在编写一个作为 Windows 或 Linux 服务运行的应用程序。它作为守护进程运行。所以我现在想添加一个 ASP.NET Core Web 界面来输出状态信息。
有推荐的方法吗?我想我需要创建一个 WebHostBuilder
并使用 .Build()
创建我的新 WebHost
,但是我应该为此创建一个新项目并且从我的控制台应用程序项目中引用它?如果是这样,它应该为项目使用哪个SDK?我不能使用 Microsoft.NET.Sdk.Web
因为这需要一个 Main
方法,如果要从现有的应用程序有自己的 Main
方法,但如果我使用 Microsoft.NET.Sdk.Razor
,我似乎会遇到一堆依赖版本冲突和错误,例如:
Version conflict detected for Microsoft.Extensions.Configuration.Abstractions. Install/reference Microsoft.Extensions.Configuration.Abstractions 2.1.1 directly to project MyProject to resolve this issue.
所以我觉得我在这里缺少一些基本的东西;在 .NET Core 的控制台应用程序中嵌入 Web 应用程序的最佳实践究竟是什么?
最佳答案
您绝对可以在您的 .NET Core 项目中安装 ASP.NET Core 包,并构建一个 WebHost
,它将用作您的应用程序中的 Web 服务器组件,正如您自己所说的。一个简单的方法是安装 Microsoft.AspNetCore.App metapackage ,其中将包括 ASP.NET Core 应用程序常用的所有包依赖项。
由于 ASP.NET Core 技术超出了我的回答范围,从现在开始我将使用简短的示例。
在您的项目中安装了 Microsoft.AspNetCore.App
元数据包之后,您可以继续创建一个 Startup
类来初始化您的服务器,并通过以下方式开发应用程序使用 ASP.NET Core 技术。一个简单的 Startup
类作为示例:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
/* configure any services you need here */
}
public void Configure(IApplicationBuilder app)
{
// Output a "hello world" to the user who accesses the server
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Hello, world!");
});
}
}
然后您可以继续使用类似的东西创建一个虚拟主机:
IWebHost myHost = WebHost.CreateDefaultBuilder()
.UseStartup<Startup>()
.Build();
最后,您必须调用 Run()
方法,以便您的 Web 主机运行并开始监听连接:
myHost.Run();
运行应用程序,服务器将以一些默认配置运行(可能在 http://localhost:5000/
地址下...默认情况下,服务器的地址/端口将打印到您的控制台输出).尝试通过浏览器访问服务器,它应该会向您打印一条漂亮的“hello world”消息。
Run()
方法是一种阻塞方法。由于您已经有一个控制台应用程序,您希望使用 Web 主机“扩展”它,因此您可能应该查看 Start()方法,它会在不阻止您的控制台应用程序的情况下触发网络主机,您可以使用它来仍然能够做一些事情,比如接受用户的输入。在 this doc page 中有一个这样做的小例子.
关于c# - 使用内置的 ASP.NET Core Web 服务器构建 .NET Core 控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345789/
我试图在 (C) Python 源代码中找到内置 in 运算符的实现。我在内置函数源代码中搜索过,bltinmodule.c ,但找不到此运算符的实现。我在哪里可以找到这个实现? 我的目标是通过扩展此
我们正在开发一个 shell(学校项目)。我们不理解一种行为。为什么内置函数在重定向时不起作用? 喜欢 cd - | command 不改变目录。 或 export NAME=VALUE | comm
有人问有关如何对列表进行排序的问题。从基本List.Sort()到List.OrderBy()有几种方法。最可笑的是自己动手的SelectionSort。我迅速将其否决,但这使我思考。应用于列表的
我正在尝试使用 C 中内置的 qsort 函数对结构进行排序 typedef struct abc{ long long int fir; long long int sec; }abc; 在
我觉得有一些内置的东西。如果对象为空,我想要默认值(或者特别是 0,我只使用十进制/整数)。是否有编写此函数的内置方法? static int GetDecimalFromObject(object
Java 是否有用于生成和解析文档的内置 XML 库?如果不是,我应该使用哪个第三方? 最佳答案 Sun Java 运行时附带 Xerces 和 Xalan 实现,它们提供解析 XML(通过 DOM
我对 python 的“all”和生成器有以下问题: G = (a for a in [0,1]) all(list(G)) # returns False - as I expected 但是:
我有一些使用 gcc 内部函数的代码。我想包含代码以防缺少内在函数。我该怎么做? #ifdef __builtin_ctzll 不起作用。 最佳答案 使用最新版本的 clang,现在可以使用 __ha
人们常说应该在本地重新声明(某些)Lua 函数,因为这样可以减少开销。但这背后的确切规则/原则是什么?我怎么知道哪些功能应该完成,哪些是多余的?还是应该为每个功能完成,甚至是您自己的功能? 不幸的是,
我想实现以下功能: TestClass values 接受任意数量的 NewClass 对象 只有 NewClass 对象没有完全相同的属性值被添加到TestClass.values 我想出了这个:
我正在尝试编写一个存储过程(使用 SQL Server Management Studio 2008 R2)以从表中检索最大测量值。这似乎是一件容易的事,所以我写了一个简短的存储过程来获取 MAX。但
我刚写了我的第一个Electron应用程序。现在,我正在尝试通过electron-packager构建它。我的package.json看起来像这样: { "name": "pixelcast",
我正在寻找在 WPF 应用程序中使用的“安全”字体系列列表 - 应该安装在所有能够运行 WPF 的客户端机器上的字体系列。 Silverlight 有一个明确定义的列表( listed on MSDN
好吧,(在写了几次之后)发现System.Windows.Controls命名空间中已经有一个BooleanToVisibilityConverter,这真是一个惊喜。 可能还有更多这样隐藏的节省时间
在我的 gradle 构建文件中,我有以下插件 block plugins { `java-library` jacoco checkstyle } 这些都没有指定版本,但一切
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
10 implementations String#reverse 已根据每个浏览器进行分析。 自 2011 年以来已对这些实现进行了解释。 当 ES6 出现时,有很多代码变得更加优雅和性能。 关于
在 Julia 包 BenchmarkTools 中,有一些像 @btime、@belapse 这样的宏对我来说似乎是多余的,因为 Julia 内置了@time、@elapse 宏。在我看来,这些宏服
我正在尝试编写一个简单的 LLVM 通行证,其目标如下: 查找所有 call指示。 在被调用函数中插入我编写的外部函数。 例如,考虑我有以下示例程序: #include #include int
我理解 'a) -> (rhs:'a -> 'a) -> 'a 在我感兴趣的情况下,我经常发现自己想要类似 (lhs:'a -> 'b) -> (rhs:'c -> 'b) -> 'b 的东西在侧面
我是一名优秀的程序员,十分优秀!