{"action":"reopened","issue":{"url":"https://api.github.com/repos/SignalR/SignalR/issues/3637","repository_url":"https://api.github.com/repos/SignalR/SignalR","labels_url":"https://api.github.com/repos/SignalR/SignalR/issues/3637/labels{/name}","comments_url":"https://api.github.com/repos/SignalR/SignalR/issues/3637/comments","events_url":"https://api.github.com/repos/SignalR/SignalR/issues/3637/events","html_url":"https://github.com/SignalR/SignalR/issues/3637","id":130324904,"number":3637,"title":"Remote stack trace is lost on client during deserialization","user":{"login":"DmitryNaumov","id":866389,"avatar_url":"https://avatars.githubusercontent.com/u/866389?v=3","gravatar_id":"","url":"https://api.github.com/users/DmitryNaumov","html_url":"https://github.com/DmitryNaumov","followers_url":"https://api.github.com/users/DmitryNaumov/followers","following_url":"https://api.github.com/users/DmitryNaumov/following{/other_user}","gists_url":"https://api.github.com/users/DmitryNaumov/gists{/gist_id}","starred_url":"https://api.github.com/users/DmitryNaumov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DmitryNaumov/subscriptions","organizations_url":"https://api.github.com/users/DmitryNaumov/orgs","repos_url":"https://api.github.com/users/DmitryNaumov/repos","events_url":"https://api.github.com/users/DmitryNaumov/events{/privacy}","received_events_url":"https://api.github.com/users/DmitryNaumov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-02-01T10:40:24Z","updated_at":"2016-07-07T13:43:44Z","closed_at":null,"body":"\r\n\t\r\n\r\nI'm trying to log SignalR remote stack trace exception in test's output. Initially it was looking promising - HubConfiguration.EnableDetailedErrors property allows serialize it to wire. Unfortunately it didn't work.\r\n\r\nFurther investigations shown that HubDispatcher writes stack trace into HubResponse and then it is serialized into transport. On the client side initially response is treated as string or as JObject. Then it is deserialized into HubResponse's counterpart - HubResult. Let's compare them:\r\n```\r\n\r\npublic class HubResponse\r\n{\r\n    [JsonProperty(\"E\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public string Error { get; set; }\r\n\r\n    [JsonProperty(\"D\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public object ErrorData { get; set; }\r\n\r\n    [JsonProperty(\"I\")]\r\n    public string Id { get; set; }\r\n\r\n    [JsonProperty(\"H\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public bool? IsHubException { get; set; }\r\n\r\n    [JsonProperty(\"P\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public object Progress { get; set; }\r\n\r\n    [JsonProperty(\"R\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public object Result { get; set; }\r\n\r\n    [JsonProperty(\"T\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public string StackTrace { get; set; }\r\n\r\n    [JsonProperty(\"S\", NullValueHandling=NullValueHandling.Ignore)]\r\n    public IDictionary<string, object> State { get; set; }\r\n}\r\n\r\n\r\npublic class HubResult\r\n{\r\n    [JsonProperty(\"E\")]\r\n    public string Error { get; set; }\r\n\r\n    [JsonProperty(\"D\")]\r\n    public object ErrorData { get; set; }\r\n\r\n    [JsonProperty(\"I\")]\r\n    public string Id { get; set; }\r\n\r\n    [JsonProperty(\"H\")]\r\n    public bool? IsHubException { get; set; }\r\n\r\n    [JsonProperty(\"P\")]\r\n    public HubProgressUpdate ProgressUpdate { get; set; }\r\n\r\n    [JsonProperty(\"R\")]\r\n    public JToken Result { get; set; }\r\n\r\n    [JsonProperty(\"S\")]\r\n    public IDictionary<string, JToken> State { get; set; }\r\n}\r\n\r\n```\r\nAs you can see HubResponse.StackTrace is serialized as \"T\" json property and deserialized into... /dev/null !\r\n\r\nThe only hope I had is that stack trace can be processed before response is deserialized into HubResponse, while working with raw string/JObject. Unfortunately I was unable to find any traces of such behavior"}}
{"actor":{"display_login":"moozzyk"}}