我試圖調用一個控制檯應用程序與SignalR.Net客戶端一起工作,但當我嘗試調用Hub上的方法時出現錯誤。下面是我的控制檯應用程序代碼:SignalR .NET客戶端調用引發異常
static void Main(string[] args)
{
var connection = new HubConnection("http://localhost/SignalRTest");
var myHub = connection.CreateProxy("SignalRTest.Classes.service");
myHub.On<string>("addMessage", text =>
{
Console.WriteLine(text);
});
connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("There was an error opening the connection: {0}", task.Exception.GetBaseException());
}
else {
Console.WriteLine("Connected.");
}
}).Wait();
myHub.Invoke("Send", "Message from console.").ContinueWith(task => {
if (task.IsFaulted)
{
Console.WriteLine("There was an error calling Send: {0}", task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Send complete.");
}
});
Console.ReadLine();
}
這裏是集線器從服務器:
[HubName("service")]
public class ServiceHub : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.addMessage(message);
}
}
我假設的控制檯應用程序連接正確,因爲它寫出了「連接」。但是當它嘗試調用服務器上的發送方法時,出現以下錯誤:
System.Net.WebException:遠程服務器返回錯誤:(500)內部服務器錯誤。 at SignalR.HttpHelper的System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 。 <> C_ DisplayClass2.b _0(IAsyncResult的AR) 在System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endMethod,TaskCompletionSource`1 TCS)
誰能告訴我什麼,我做錯了什麼?謝謝。
工作。謝謝!我認爲我可以用這個[HubName(「service」)]來更改集線器名稱。它在JavaScript客戶端上工作,但不在控制檯客戶端上。但是現在並不重要,因爲我不需要它。再次感謝你的幫助。我無法相信我那麼接近。 – jmac 2012-03-14 01:22:09
@jmac,所以你改變了var myHub = connection.CreateProxy(「SignalRTest.Classes.service」); var myHub = connection.CreateProxy(「service」);或者你刪除了屬性[HubName(「service」)]? – 2014-02-26 06:10:42
@PrerakK記住,這是近兩年前現在。問題可能是'var myHub = connection.CreateProxy(「service」)'。這是錯誤的,因爲hubname屬性隻影響生成的javascript而不是實際的端點。正確的行是'var myHub = connection.CreateProxy(「ServiceHub」)' – 2014-02-27 04:17:22