【问题标题】:OWIN Startup errorOWIN 启动错误
【发布时间】:2017-05-31 17:13:56
【问题描述】:

如果我使用自托管 Web api (OWIN) 启动我的应用程序,则会收到以下错误消息:

{“尝试加载应用时出现以下错误。\r\n - 对于应用启动参数值'....PlugIn.WebService.Startup, ....PlugIn.WebService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', 程序集 '....PlugIn.WebService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 没有找到。":""}

Owin 在动态加载的程序集中实现。

错误发生在以下行:

webApiDisposable = WebApp.Start<Startup>(url: baseAddress);

基本网址是:http://localhost:42015/

启动看起来像:

public class Startup
{
    /// <summary>
    /// Configurate the new http client
    /// </summary>
    /// <param name="appBuilder">OWIN App builder</param>
    public void Configuration(IAppBuilder appBuilder)
    {
        string routeTempl = "api/" + EndpointManager.API_VERSION + 
                            "/{controller}/{action}/{id}";

        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: routeTempl,
            defaults: new { id = RouteParameter.Optional }
        );

        // Attribute routing
        config.MapHttpAttributeRoutes();

        // Set all filter, like for authentication and autoriuation
        config.Filters.Add(new IntegratedAuthorization());

        // Setup Json-return
        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
        config.Formatters.JsonFormatter.SerializerSettings =
        new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };

        appBuilder.UseWebApi(config);
    }
}

奇怪的是,在另一个项目中它工作得很好。我也试过Owin.Start-Attribute

【问题讨论】:

  • 问题可能是缺少参考,或者 web.config 错误或类似的东西。
  • 我不需要任何 web.config(因为它是自托管的和 Windows 服务)。 Nuget 应该已经加载了所有需要的依赖项。这似乎是完整的。
  • 什么是Plugin.WebService,为什么找不到?这就是错误引导你的方向。这就是为什么我认为它与这段代码无关。
  • PlugIn.Webservice 是一个简单的 Dll,使用 Assembly.Load... 动态加载。调用webApiDisposable = WebApp.Start&lt;Startup&gt;(url: baseAddress);的方法是我们系统的核心。
  • 它正在尝试加载该 DLL 并失败。您需要弄清楚为什么它无法加载该 DLL。以及为什么它认为它需要那个 DLL。我现在会删除对它的依赖,看看它是否有效,然后将其添加回来。

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


【解决方案1】:

我遇到了同样的问题,启动程序时找不到Startup类。这不是仅与 OWIN 相关的问题,但可能出于相同的原因。

由于某些原因,Web 服务的程序集名称已更改,不幸的是它与同一项目引用的另一个程序集相同。

当然,他们有冲突。 解决方案是重命名大会。

我知道现在帮助 BendEg 已经很晚了,但也许这对其他人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2014-04-19
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2015-02-27
    相关资源
    最近更新 更多