【问题标题】:SignalR Unexpected response code: 500SignalR 意外响应代码:500
【发布时间】:2014-03-04 12:27:57
【问题描述】:

当我使用

的 JsonSerializer 选项时
_connection.JsonSerializer.TypeNameHandling = TypeNameHandling.All

_connection.Start() 出现错误 {"StatusCode:500,ReasonPhrase:'内部服务器错误',版本:1.1,内容:System.Net.Http.StreamContent,标头:\r\n{\r\n 日期:2014 年 3 月 4 日星期二 12:26: 26 GMT\r\n 服务器:Microsoft-HTTPAPI/2.0\r\n 内容长度:0\r\n}"}

当我使用此选项时,一切正常 _connection.JsonSerializer.TypeNameHandling = TypeNameHandling.Auto

【问题讨论】:

  • 查看服务器端的堆栈跟踪信息以更好地调试它。也许打开你的Immediate Window(CTRL+ALT+I)(IIRC) 看看发生了什么
  • 消息没有传递到服务器端
  • @Shachaf.Gortler 我遇到了类似的问题,并且会重视您解决此问题的任何方向!

标签: c# json signalr signalr-hub


【解决方案1】:

您需要为默认关闭的服务器启用详细错误。我只在调试模式下启用它们

[assembly: OwinStartup(typeof(Startup))]
namespace MvcProject.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var hubConfiguration = new HubConfiguration();

#if DEBUG
            hubConfiguration.EnableDetailedErrors = true;
#endif
            app.MapSignalR(hubConfiguration);

然后错误应该是非常自我解释的。

还要检查您是否拥有修复此错误的 JSON.net 版本: JsonSerializer does not appear to respect TypeNameHandling property correctly

【讨论】:

  • 我使用的是 json.net 版本 6.0.0.0
  • 并非如此,除非它是一种回归。你有更多关于实际服务器错误的详细信息吗?
  • 无其他数据 这是客户端发送的内容,{localhost:8080/signalr/…{"$type":"System.Linq.Enumerable+WhereSelectEnumerableIterator2[[System.Collections.Generic.KeyValuePair2[[System.String, mscorlib],[Microsoft .AspNet.SignalR.Client.Hubs.HubProxy, Microsoft.AspNet.SignalR.Client]], mscorlib],[Microsoft.AspNet.SignalR.Client.Hubs.HubRegistrationData, Microsoft.AspNet.SignalR.Client]], System.Core ","$values":[{"$type":"Microsoft.AspNet.SignalR.Client.Hubs.HubRegistrationData, Microsoft.AspNet.SignalR.Client","Name":"QRCSignalRServer"}]}}
  • 从来没有使用过 TypeNameHandling.All,出于好奇,你为什么这样做?作为猜测,您发送的对象是否在 json 中为所有值命名了属性?
猜你喜欢
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多