2

最も単純な例 ( https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs ) を WebSite で実装しようとしています (WebForms を試してみましたが、悲しいことに同じ結果が得られました)。

Monitor.cs

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

[HubName("chat")]
public class Chat : Hub {
    public void Send(string message) {
        // Call the addMessage method on all clients            
        Clients.All.addMessage(message);
        }
    }

Global.asax

<%@ Application Language="C#" %>

<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        RouteTable.Routes.MapHubs();
    }

Default.aspx

<%@ Page Title="Monitor" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Monitor.aspx.cs" Inherits="Monitor" %>

<asp:Content ID="MonitorHeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

    <script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script>

    <script src="Scripts/jquery.signalR-1.0.0.min.js" type="text/javascript"></script>
    <script src="/signalr/hubs" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            // Proxy created on the fly          
            var chat = $.connection.chat;
            // Declare a function on the chat hub so the server can invoke it          
            chat.client.addMessage = function (message) {
                $('#messages').append('<li>' + message + '</li>');
            };
            // Start the connection
            $.connection.hub.start().done(function () {
                $("#broadcast").click(function () {
                    // Call the chat method on the server
                    chat.server.send($('#msg').val());
                });
            });
        });
    </script>

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

    <input type="text" id="msg" />
    <input type="button" id="broadcast" value="broadcast" />
    <ul id="messages">
</asp:Content>

それは機能せず、クリックする/signalr/hubsと取得します

    <span><h1>Server Error in 'XXX' Application.<hr width=100% size=1 color=silver></h1>
    <h2> <i>HTTP Error 404 - Not Found.</i> </h2></span>

私は何を間違っていますか?

4

2 に答える 2

2

/signalr/hubs が 404 で応答している場合は、への呼び出しに問題がありますRouteTable.Routes.MapHubs();。呼び出されていないか、RouteTable/signalr/hubs に一致するが 404 で応答する最初のルートに追加された別のルートがあります。

SignalR Faq の「シグナル/ハブが 404 を返すのはなぜですか、または 'myhub' が未定義になるのはなぜですか」はこれについて説明しています。それでも問題が解決しない場合は、ルートをデバッグする必要があります。

于 2013-03-01T18:59:13.377 に答える
1

WebSite では、Default.aspx で次を使用します。

<script src="signalr/hubs" type="text/javascript"></script>

https://github.com/SignalR/SignalR/wiki/QuickStart-Hubsの例も更新しました。

于 2013-03-07T01:02:09.693 に答える