【问题标题】:ASP.NET Web Api built from/with Console从/使用控制台构建的 ASP.NET Web Api
【发布时间】:2018-10-07 21:07:21
【问题描述】:

我希望能够使用ASP.Net Web Api 打开并输出到Console

原因是因为我在启动 Web Api 之前初始化了很多元素和对象。然后我使用依赖注入注册这些对象,以便在我的ApiController 中访问它们。

当我启动 Web Api 时,我需要打开控制台,这样我才能看到初始化的过程以及需要多长时间。

我知道可以将日志从 Web Api 发送到调试控制台,但这不是我想要的。

也许有办法启动一个控制台项目并将 Web Api 框架整合到其中?

【问题讨论】:

  • 有许多记录器包(NLog 就是其中之一)可以将日志输出到各种目的地,例如文件、控制台、数据库、TCP/IP 连接(以及调试窗口)。

标签: c# asp.net asp.net-web-api console


【解决方案1】:

OWIN方式:

  1. 创建控制台应用程序
  2. 将“Microsoft.AspNet.WebApi.OwinSelfHost”包及其依赖项添加到项目中
  3. 添加 Startup.cs 文件,内容如下:

    using Owin;
    using System.Web.Http;
    
    namespace YourConsoleAppProjectNamespace {
        public class Startup {
            public void Configuration(IAppBuilder appBuilder) {
                HttpConfiguration config = new HttpConfiguration();
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
                appBuilder.UseWebApi(config);
            }
        }
    }
    
  4. 修改项目的 Main()

    using Microsoft.Owin.Hosting;
    using System;
    
    namespace YourConsoleAppProjectNamespace {
        class Program {
            static void Main(string[] args) {
                WebApp.Start<Startup>("http://localhost:3333/");
                Console.ReadLine(); // block main thread
            }
        }
    }
    
  5. 使用动作方法定义控制器并进行测试。

【讨论】:

  • 似乎是一个很酷的解决方案。然而WebApp.Start 抛出NullReferenceException
  • 添加Microsoft.AspNet.WebApi.OwinSelfHost 5.2.6 后,是否更新了所有版本的Owin相关包?我必须将另外 4 个软件包更新到最新版本。
  • 我试过了,它说一切都是最新的。但我有警告,因为我在 Mac 上运行 VS,所以它使用 NetCore App 2.1
  • 发现问题。必须安装System.Configuration.Abstractionsgithub.com/aspnet/AspNetKatana/issues/196
  • 我的测试项目以 .NET 4.6.1 为目标。我创建的测试项目是 Console App(.NET Framework) 类型。
猜你喜欢
  • 2018-01-29
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多