1

C# WinForms アプリケーション内で SignalR Hubs サーバーを自己ホストしています。

        string url = "http://localhost:8081/";

        m_signalrServer = new Microsoft.AspNet.SignalR.Hosting.Self.Server(url);

        // Map the default hub url (/signalr)
        m_signalrServer.MapHubs();

        // Start the SignalRserver
        m_signalrServer.Start();   

私の ASP.NET Web アプリケーションは、SignalR Hubs JavaScript クライアントとして機能しています。

<script type="text/javascript" src="/Scripts/jquery.signalR-1.0.0-alpha2.min.js"></script>
<script type="text/javascript" src="http://localhost:8081/signalr/hubs"></script>
<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $.connection.hub.url = 'http://localhost:8081/signalr'

        var myHub = $.connection.myHub;

        $.connection.hub.error(function () {
            console.log("Error!");
        });

        $.connection.hub.start()
        .done(function () {
            console.log("Connected!");
        })
        .fail(function () { console.log("Could not connect!"); });           
    });   
</script>

このコードは、サーバーの Web ブラウザーを使用している場合に正しく機能しますhttp://localhost:8081/signalr/hubs

ただし、を介して外部からサイトを参照するhttp://serveripと、JQuery スクリプトが を探しているためhttp://localhost:8081/signalr(ローカル コンピューターで探していると思います)、SignalR は失敗します。

私は変わりました:

$.connection.hub.url = 'http://serverip:8081/signalr'

8081 で Web サイトの閲覧を有効にして、 経由で Web サイトを閲覧できhttp://serverip:8081ます。ただし、 を参照してhttp://serverip:8081/SignalR/Hubsも、 から入手できるハブ ファイルが見つかりませんhttp://localhost:8081/siganlr/hubs

また、テストとして、ASP.NET Web アプリケーション内で App_Start フォルダー -> RegisterHubs.cs ファイルを介して SignalR を有効にしました。RouteTable.Routes.MapHubs();

これにより、http://serverip:8081/signalr/hubsまたはhttp://serverip/signalr/hubsASP.NET Web サイトによって生成されたハブを参照できます。これは、私が C# WinForms アプリケーションからホストしているハブではないため、私が望むものではありません。

繰り返しますが、 を参照しhttp://serverip:8081/signalr/hubsても、 に存在する signalr または hubs ファイルが見つかりませんhttp://localhost:8081/signalr/hubs。このファイルを ASP.NET Web アプリケーションで使用できるようにして、SignalR を外部で動作させる方法を知っている人はいますか?

編集: サーバー ファイアウォールで 8081 が開いていることを忘れていました。

4

1 に答える 1

2

次のように変更します。

string url = "http://*:8081/";

m_signalrServer = new Microsoft.AspNet.SignalR.Hosting.Self.Server(url);
于 2012-11-23T10:51:37.850 に答える