![](/img/trans.png)
[英]SignalR does not invoke server hub method when calling function outside of .done
[英]SignalR: Internal Server Error when calling hub method
我已經和SignalR玩了幾天了,我不得不說這是一個絕對非凡的圖書館。 我已經成功地完成了一些工作並且對簡單性感到震驚,但我最近遇到了一個小問題。
我無法在瀏覽器中使用JavaScript調用Hub方法。 請求返回500錯誤代碼,當我查看錯誤頁面源代碼時,我看到:
[ArgumentNullException: Value cannot be null.
Parameter name: s]
System.IO.StringReader..ctor(String s) +10207225
Newtonsoft.Json.Linq.JObject.Parse(String json) +74
SignalR.Hubs.HubRequestParser.Parse(String data) +78
SignalR.Hubs.HubDispatcher.OnReceivedAsync(IRequest request, String connectionId, String data) +266
SignalR.<>c__DisplayClass6.<ProcessRequestAsync>b__4(String data) +84
SignalR.Transports.ForeverTransport.ProcessSendRequest() +159
SignalR.Transports.ForeverTransport.ProcessRequestCore(ITransportConnection connection) +149
SignalR.Transports.ForeverTransport.ProcessRequest(ITransportConnection connection) +42
SignalR.PersistentConnection.ProcessRequestAsync(HostContext context) +1087
SignalR.Hubs.HubDispatcher.ProcessRequestAsync(HostContext context) +251
SignalR.Hosting.AspNet.AspNetHandler.ProcessRequestAsync(HttpContextBase context) +656
SignalR.Hosting.AspNet.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler.BeginProcessReques t(HttpContext context, AsyncCallback cb, Object extraData) +143
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9479007
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +178
我的服務器端代碼是:
public class SourceHub : Hub
{
public void RegisterSource(string source)
{
Groups.Add(Context.ConnectionId, source);
}
}
在客戶端我有:
var SourceHub = $.connection.sourceHub;
$.connection.hub.start().done(function () {
SourceHub.registerSource("test");
});
我已經挖了一段時間了,但我找不到問題的根源......有人可以幫幫我嗎?
前言:我在edobry的團隊參與這個項目,而且我是后端人員,所以這次涉足前端對我來說是新的和吸引人的。
因此,在我逐步完成項目之后對代碼進行了一些仔細的剖析之后,事實證明請求變量中的POST數據是空的。 數據被正確發送到$ .ajax調用,但從未到達服務器。 還有一些狩獵,我發現了一些可疑的東西,然后我就能辨別出發生了什么。
我們將Ajax用於頁面的其他部分,並且多次調用ajax方法,因此我們將每個方法調用中設置的一些設置考慮到$ .ajaxSetup中。 其中一個是dataType設置為“text”,contentType設置為“application / json”。 似乎signalR沒有正確覆蓋全局ajax設置。 我不確定這是一個錯誤還是預期的行為,但是如果是這樣的話應該更好地記錄(如果是,請隨意給我們打電話。))
您的方法稱為RegisterSource ,您在javascript中調用registerSources而不是registerSource 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.