簡體   English   中英

SignalR:調用hub方法時出現內部服務器錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM