【问题标题】:SignalR/Silverlight: Start must be called before data can be sent.SignalR/Silverlight:必须在发送数据之前调用 Start。
【发布时间】:2012-11-27 23:49:57
【问题描述】:

我有以下客户端代码(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 网络项目中):

[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

【问题讨论】:

  • 看起来应该可以正常工作。你能把一个repro项目推送到某个地方并在github上报告这个错误。
  • @dfowler - 我发现了问题 - SignalR 正在使用 System.Threading.Tasks 端口 (robertmclaws.com/nuget-packages/…) 但它与最新版本 3.0.1 不兼容。这导致一些奇怪的事情发生。我找到了 2.1.2 的旧副本,它可以工作。是否可以看看这个问题兼容性问题?

标签: c# silverlight signalr


【解决方案1】:

我有同样的问题...使用 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/...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多