2

次のクライアント コード (Silverlight 4) があります。

HubConnection hubConnection;
IHubProxy alertHub; 

hubConnection = new HubConnection("http://localhost:59805/");
alertHub = hubConnection.CreateProxy("alertservice");

Task startTask = hubConnection.Start().ContinueWith(task =>
{
    if (task.IsFaulted)
    {

    }

    alertHub.Invoke("NewMessage", "asdf", "jkl").Wait();
});

そして、次のサーバー コード (ASP.Net Web プロジェクトでホストされています):

[HubName("alertservice")]
public class AlertServiceHub : Hub
{
    public void NewMessage(string userName, string messageText)
    {
        Clients.AddMessage(userName, messageText);
    }
}

メソッドで、alertHub.Invoke「データを送信する前に Start を呼び出す必要があります」というエラーが表示されます。

奇妙なことに、接続試行時に Fiddler をチェックすると、次のメッセージが返されます (「接続: 閉じる」に注意してください)。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Tue, 14 Aug 2012 15:11:29 GMT
X-AspNet-Version: 4.0.30319
Transfer-Encoding: chunked
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: text/event-stream
Connection: Close
4

1 に答える 1

0

私は同じ問題を抱えています... VS2010、Silverlight4、Nuget 2.1を使用しています:

EkoostikMartin と同様に System.Threading.Tasks.SL4 2.1.2 を使用しましたが、同じエラーが発生しました。

名前空間 Microsoft.AspNet.SignalR.Client.Http で。HttpHelper クラス:

public static Task<HttpWebResponse> GetHttpResponseAsync(this HttpWebRequest request)
        {
            try
            {
                return Task.Factory.FromAsync<HttpWebResponse>(request.BeginGetResponse, ar => (HttpWebResponse)request.EndGetResponse(ar), null);
            }
            catch (Exception ex)
            {
                return TaskAsyncHelper.FromError<HttpWebResponse>(ex);
            }
        }

エラー:(HttpWebResponse)request.EndGetResponse(ar)

WebException: 正しいと思われるリクエスト URL を確認できます: localhost:12345/signalr/...

于 2012-11-27T15:49:57.037 に答える