【问题标题】:Error in owin startup class visual studio 2012owin 启动类 Visual Studio 2012 中的错误
【发布时间】:2016-05-27 21:27:13
【问题描述】:

我是 Signal r 的新手,我正在尝试在 c# Visual Studio 2012 中创建一个基本的聊天应用程序,但出现以下错误。

The following errors occurred while attempting to load the app.
- No assembly found containing an OwinStartupAttribute.
- The discovered startup type 'SignalRTutorials.Startup, SignalRTutorials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 
    conflicts with the type 'Microsoft.VisualStudio.Web.PageInspector.Runtime.Startup, Microsoft.VisualStudio.Web.PageInspector.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 
 Remove or rename one of the types, or reference the desired type directly. 
 To disable OWIN startup discovery, add the appSetting owin:AutomaticAppStartup with a value of "false" in your web.config. 
 To specify the OWIN startup Assembly, Class, or Method, add the appSetting owin:AppStartup with the fully qualified startup class or configuration method name in your web.config.

我创建了 3 个文件:

1) 首先是 Letschat.cs 类为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace SignalRTutorials
{
    [HubName("myChatHub")]
    public class LetsChat:Hub
    {
        public void send(string message)
        {

            Clients.All.addMessage(message);

        }
    }
}

2) 第二个文件 chat.aspx 为

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Chat.aspx.cs" Inherits="SignalRTutorials.Chat" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery-1.6.4-vsdoc.js"></script>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-2.0.0.js"></script>
    <script src="Scripts/jquery.signalR-2.0.0.min.js"></script> 
</head>
<body>
    <form id="form1" runat="server">
         <script type="text/javascript">

             $(function()
             {
                 var IWannaChat=$.connection.myChatHub;
                 IWannaChat.client.addMessage=function(message){

                     $('#listMessages').append('<li>'+message+'</li>');
                 };
                 $("#SendMessage").click(function(){
                     IWannaChat.server.send($('#txtMessage').val());
                 });
                 $.connection.hub.start();
             });


         </script>
    <div>
    <input type="text" id="txtMessage" />
         <input type="text" id="SendMessage" value="broadcast" />
        <ul id="listMessages">



        </ul>
    </div>
    </form>
</body>
</html>

3) 类命名为 Startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web;
using System.Web.Routing;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Security;
using Owin;


namespace SignalRTutorials
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }

    }
}

我不知道我在哪里做错了在这方面的任何帮助将不胜感激。

【问题讨论】:

  • 您使用的是什么版本的 .NET 和 SignalR?
  • .net 4.5 Visual Studio 2012 和 Signal r 2.0
  • 您可以尝试添加一个程序集级别属性 [程序集:OwinStartup(typeof(SignalRTutorials.Startup))] 看看是否可以解决问题?

标签: c# signalr owin


【解决方案1】:

面临同样的问题。 正如@Praburaj 建议的那样,尝试添加程序集级别属性

您可以尝试以下方法。

using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Security;
using Owin;

//add the attribute here
[assembly: OwinStartup(typeof(SignalRTutorials.Startup))]

namespace SignalRTutorials
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }

    }
}

【讨论】:

    【解决方案2】:

    我在 Visual Studio 2013 上遇到了同样的问题。

    删除我的项目中的 \bin\obj 文件夹,然后重建它解决了问题。

    【讨论】:

      【解决方案3】:

      您只需要添加 OWIN StartUp 类 [即StartUp1.cs] 到您的项目中。

      using System;
      using System.Threading.Tasks;
      using Microsoft.Owin;
      using Owin;
      
      [assembly: OwinStartup(typeof(UserInterfaceLayer.Hubs.Startup))]
      
      namespace UserInterfaceLayer.Hubs
      {
          public class Startup
          {
              public void Configuration(IAppBuilder app)
              {
                  app.MapSignalR();
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        如果您已构建项目,然后将其重命名,则可能会出现此问题。尝试删除 bin 文件夹中的所有文件,然后运行您的项目。这对我有用。

        【讨论】:

          【解决方案5】:

          只需添加这一行

          [assembly: OwinStartup(typeof(SignalRTutorials.Hubs.Startup))] as described here
          

          http://yazilimsozluk.com/no-assembly-found-containing-an-owinstartupattribute

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-27
            • 1970-01-01
            • 2012-08-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多