简体   繁体   English

Windows服务中的自托管OWIN,无配置方法。

[英]self-hosting OWIN in windows service, no configuration method.

I am attempting to self-host OWIN in a windows service. 我试图在Windows服务中自托管OWIN。 When I debug through visual studio 2017 it works great, but when I try to run the service in a release build I get the following error. 当我通过Visual Studio 2017调试时,效果很好,但是当我尝试在发布版本中运行服务时,出现以下错误。

Unhandled Exception: System.EntryPointNotFoundException: The following errors occurred while attempting to load the app. 未处理的异常:System.EntryPointNotFoundException:尝试加载应用程序时发生以下错误。 - No 'Configuration' method was found in class '., Vps.SysComm.Service, Version=3.12.0.0, Culture=neutral, PublicKeyToken=null'. -在类'。,Vps.SysComm.Service,Version = 3.12.0.0,Culture = neutral,PublicKeyToken = null'中找不到'Configuration'方法。 at Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveApp(StartContext context) at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context) at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options) at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options) at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options) at ..() at ..(String[] ) 在Microsoft.Owin.Hosting.Starting.DirectHostingStarter.Start(StartOptions options)处的Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context)在Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveApp(StartContext context) Microsoft.Owin的Microsoft.Owin.Hosting.WebApp.Start(StartOptions选项)的.Owin.Hosting.Starter.HostingStarter.Start(StartOptions选项)(Microsoft.Owin.Hosting.WebApp.Start(StartOptions选项))。 ..()位于..(String [])处的Hosting.WebApp.Start [TStartup](StartOptions options)

What is interesting is the . 有趣的是。 for startup class name. 启动类名称。

This is my startup class. 这是我的入门班。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(Vps.SysComm.Service.Startup))]
namespace Vps.SysComm.Service
{
    public class Startup
    {
        // This code configures Web API. The Startup class is specified as a type
        // parameter in the WebApp.Start method.
        public void Configuration(IAppBuilder appBuilder)
        {
            // Configure Web API for self-host. 
            HttpConfiguration config = new HttpConfiguration();

            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            appBuilder.UseWebApi(config);
        }
    }
}

inside my Main service start method 在我的主要服务启动方法中

  string baseAddress = "http://localhost:9000";
  _sysCommAPI = WebApp.Start<Startup>(url: baseAddress);

You can try Thread.Sleep(100); 您可以尝试Thread.Sleep(100); inside Configuration method. 内部配置方法。 Hope It will work. 希望它会工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM