web-dev-qa-db-ja.com

SignalR:ハブの読み込みエラー

Signalrがハブをロードしません:

_SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>. 
_

_startup configuration_でapp.MapSignalR();を呼び出しています。

私は自分のcshtmlに追加しました:

_<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery.signalR-2.0.0.js"></script>
<script src="~/signalr/hubs" type="text/javascript"></script>

<script>

    $(document).ready(function () {
        window.hubReady = $.connection.hub.start();
    });

</script>
_
12
daniel

スタートアップクラスに次の属性があることを確認してください。

[Assembly: OwinStartup(typeof(MyStartupClass))]

Web.configでOwinスタートアップクラスを定義することもできます。

<appSettings>  
    <add key="owin:appStartup" value="MyNamespace.MyStartupClass" />
</appSettings>
8
Rob Lyndon

あなたのサイトにアクセスしてください、例 http:// localhost/signalr/hubs 、そしてあなたがそこでより良いエラーの説明を得ることができるかどうか見てください。私の問題は、ハブにジェネリックメソッドがあることでした。

public void Update<T>(T objectToUpdate) where T : class
8
Ogglas

また、スタートアップクラスを必ず追加してください。

app.MapSignalR();

私の問題を解決しました

1
JustLearning

サーバーはスタートアップクラスがどこにあるかを知っている必要があります

1つのオプションは、Robが書いたようなものです。

[Assembly: OwinStartup(typeof(MyStartupClass))]

しかし、あなたの要求に応じて他の可能性があります。 Microsoft Docs(docs.Microsoft.com/en-us/aspnet/core/fundamentals/startup)から:

または、UseStartupを呼び出すことにより、環境に関係なく使用される固定のスタートアップクラスを定義できます。これが推奨されるアプローチです。

例:

public class Program
    {
        public static void Main(string[] args)
        {     
          BuildWebHost(args).Run();   
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
0
Stephu