[英]SignalR Client error when trying to connect to server with connection.Start()
我正在使用ASP.NET網站上的股票SignalR示例:
http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-server-broadcast-with-signalr-20
服務器運行正常,JavaScript客戶端正在按照預期工作並在彼此之間進行通信。 服務器和JavaScript客戶端在IIS上運行。
JavaScript客戶端位於:
http://192.168.1.5:8080/RTStreamer/SignalR.Sample/StockTicker.html
現在我正在嘗試使用C#Windows Forms客戶端,但沒有成功:
private void Form1_Load(object sender, EventArgs e)
{
var connection = new HubConnection("http://192.168.1.5:8080/RTStreamer/signalr");
IHubProxy proxy = connection.CreateHubProxy("StockTickerHub");
try
{
connection.Start().Wait();
var stocks = proxy.Invoke<IEnumerable<Stock>>("GetAllStocks").Result;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我在嘗試連接時遇到此錯誤.Start():
System.AggregateException: One or more errors occurred. ---> Microsoft.AspNet.SignalR.Client.HttpClientException: StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Transfer-Encoding: chunked
Cache-Control: private
Date: Tue, 12 Aug 2014 13:46:31 GMT
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Type: text/html; charset=utf-8
}
at Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.<>c__DisplayClass2.<Get>b__1(HttpResponseMessage responseMessage)
at Microsoft.AspNet.SignalR.TaskAsyncHelper.<>c__DisplayClass19`2.<Then>b__17(Task`1 t)
at Microsoft.AspNet.SignalR.TaskAsyncHelper.TaskRunners`2.<>c__DisplayClass3a.<RunTask>b__39(Task`1 t)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at TraderClient.Form1.Form1_Load(Object sender, EventArgs e) in c:\Ark\Form1.cs:line 31
---> (Inner Exception #0) Microsoft.AspNet.SignalR.Client.HttpClientException: StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Transfer-Encoding: chunked
Cache-Control: private
Date: Tue, 12 Aug 2014 13:46:31 GMT
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Type: text/html; charset=utf-8
}
at Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.<>c__DisplayClass2.<Get>b__1(HttpResponseMessage responseMessage)
at Microsoft.AspNet.SignalR.TaskAsyncHelper.<>c__DisplayClass19`2.<Then>b__17(Task`1 t)
at Microsoft.AspNet.SignalR.TaskAsyncHelper.TaskRunners`2.<>c__DisplayClass3a.<RunTask>b__39(Task`1 t)<---
這是Hub代碼:
namespace Microsoft.AspNet.SignalR.StockTicker
{
[HubName("stockTicker")]
public class StockTickerHub : Hub
{
private readonly StockTicker _stockTicker;
public StockTickerHub()
: this(StockTicker.Instance)
{
}
public StockTickerHub(StockTicker stockTicker)
{
_stockTicker = stockTicker;
}
public IEnumerable<StockQuote> GetAllStocks()
{
return _stockTicker.GetAllStocks();
}
...
}
}
完全根據鏈接文章設置項目,適用於我的.NET客戶端具有以下代碼:
var connection = new HubConnection("http://localhost:65069/");
IHubProxy proxy = connection.CreateHubProxy("stockTickerMini");
try
{
connection.Start().Wait();
var stocks = proxy.Invoke<IEnumerable<Stock>>("GetAllStocks").Result;
}
...
在我的示例中, StockTicker.html
頁面位於http://localhost:65069/StockTicker.html
並且根據屬性,集線器名稱為stockTickerMini
。
在您的情況下,下面的值應該是正確的:
var connection = new HubConnection("http://192.168.1.5:8080/RTStreamer");
IHubProxy proxy = connection.CreateHubProxy("stockTicker");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.