re jQuery.noConflict(); ' type=-6ren">
gpt4 book ai didi

jquery - SignalR : Could not cast or convert from System. 字符串到 System.Collections.Generic.IEnumerable

转载 作者:行者123 更新时间:2023-12-01 00:10:20 24 4
gpt4 key购买 nike

以下是我在两个不同页面上使用的客户端代码:

<script src='<%= Page.ResolveUrl("~/resources/js/jquery-1.6.4.min.js") %>' type="text/javascript"></script>re
<script type="text/javascript">
jQuery.noConflict();
</script>
<script src='<%= Page.ResolveUrl("~/resources/js/jquery.signalR-1.2.0.min.js") %>' type="text/javascript"></script>
<script src='<%= Page.ResolveUrl("~/signalr/hubs") %>' type="text/javascript"></script>
<script type="text/javascript">
jQuery(function () {
// Declare a proxy to reference the hub.
var usr = jQuery.connection.notificationHub;
jQuery.connection.hub.logging = true;

jQuery.connection.hub.qs = "clientId=arif";// +readCookie("personId");

jQuery.connection.hub.start().done(function () {

});
usr.client.showUsersOnLine = function (data) {
};

});

</script>

在一个页面上它已连接并且工作正常,但在另一页面上它给了我以下错误:

[ArgumentException: Could not cast or convert from System.String to System.Collections.Generic.IEnumerable`1[Microsoft.AspNet.SignalR.Hubs.HubDispatcher+ClientHubInfo].]
Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object value, Type initialType, Type targetType) +241
Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(Object initialValue, CultureInfo culture, Type targetType) +123
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) +238

[JsonSerializationException: Error converting value "[{"name": "notificationhub"}]" to type 'System.Collections.Generic.IEnumerable`1[Microsoft.AspNet.SignalR.Hubs.HubDispatcher+ClientHubInfo]'. Path '', line 1, position 35.]
Microsoft.Owin.Host.SystemWeb.Infrastructure.<>c__DisplayClass1.<GetRethrowWithNoStackLossDelegate>b__0(Exception ex) +27
Microsoft.Owin.Host.SystemWeb.Infrastructure.ErrorState.Rethrow() +34
Microsoft.Owin.Host.SystemWeb.CallContextAsyncResult.End(IAsyncResult result) +49
Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.EndProcessRequest(IAsyncResult result) +7
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9628972
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

我看到的唯一区别是:调用协商 utl 时,“connectionData”参数不同:对于其工作的页面如下:

connectionData  [{"name":"notificationhub"}]

对于无法正常工作的页面,如下所示:

connectionData  "[{\"name\": \"notificationhub\"}]"

任何人都可以建议我实际上缺少什么或应该检查什么吗?

最佳答案

好的,这就是我收到此错误的原因。

jquery.signalr-2.0.0.js文件中,在第2578行设置断点

connection.data = connection.json.stringify(subscribedHubs);

进入该函数调用并查看您的 JSON.stringify 方法是否已被覆盖。就我而言,我使用的是旧版本的 prototype.js,它覆盖了 JSON.stringify 函数,导致发生错误的解析。

此外,尝试从 F12 开发人员工具运行以下命令:

JSON.stringify([{name:"testhub"}]);

如果应该返回"[{"name":"testhub"}]",如果返回""[{\"name\":\"testhub\"}] ""您的 stringify 已被泄露。

关于jquery - SignalR : Could not cast or convert from System. 字符串到 System.Collections.Generic.IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com