OwinStartup和asp.net mvc中的信号器启动

时间:2014-03-24 11:23:42

标签: c# signalr owin

我在asp.net mvc中遇到SignalR的问题 我在下面添加一个包: enter image description here

并添加Startup.cs

using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(Paksh.Startup))]
namespace Paksh
 {
   public class Startup
    {
      public static void ConfigureSignalR(IAppBuilder app)
       {
                  app.MapSignalR();
       }
     }
 }

但我收到错误:

  

尝试加载应用时发生以下错误。    - OwinStartupAttribute.FriendlyName值''与给定值不匹配' ProductionConfiguration'在Assembly' Paksh,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。    - 给定的类型或方法' ProductionConfiguration'没找到。尝试指定程序集。   要禁用OWIN启动发现,请添加appSetting owin:AutomaticAppStartup,其值为" false"在你的web.config中。   要指定OWIN启动程序集,类或方法,请在web.config中添加appSetting owin:AppStartup以及完全限定的启动类或配置方法名称。

2 个答案:

答案 0 :(得分:9)

错误明确指出

  

找不到给定的[...]方法'ProductionConfiguration'。

这意味着OWIN Startup Class Detection正在查找您提供的类型ProductionConfiguration上的Paksh.Startup方法,但无法找到它。有些东西告诉我你的 web.config 中也有类似的东西:

<appSettings>  
  <add key="owin:appStartup" value="ProductionConfiguration" />       
</appSettings>

您有几种方法可以解决这个问题:

  1. ConfigureSignalR方法的名称更改为ProductionConfiguration
  2. OwinStartupAttribute[assembly: OwinStartup(typeof(Paksh.Startup), "ConfigureSignalR")]
  3. 中指定正确的方法名称

    要了解OWIN启动类检测,请阅读更多here

答案 1 :(得分:0)

我遇到与OP类似的错误,但是使用属性而不是web.config。我有:

[assembly: OwinStartup("Configuration", typeof(StartUp))]
namespace WebPipes
{
    public class StartUp
    {
        public void Configuration(IAppBuilder app)
        {
            GlobalConfiguration.Configuration.UseSqlServerStorage("HangfireDB");

            app.UseHangfireServer();
            app.UseHangfireDashboard();
        }
    }
}

OwinStartup中的参数不正确,第一个参数表示友好名称,而不是方法名称。但是,以下代码确实有效:

[assembly: OwinStartup(typeof(StartUp), "Configuration")]
namespace WebPipes
{
    public class StartUp
    {
        public void Configuration(IAppBuilder app)
        {
            GlobalConfiguration.Configuration.UseSqlServerStorage("HangfireDB");

            app.UseHangfireServer();
            app.UseHangfireDashboard();
        }
    }
}