2014-11-16 54 views
4

JRawValue(https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Core/Json/JRawValue.cs):SignalR不使用解決JsonSerializer傳入服務器的呼叫

var serializer = JsonUtility.CreateDefaultSerializer(); 

爲什麼不呢?

var serializer = GlobalHost.DependencyResolver.Resolve<JsonSerializer>(); 

這是錯誤嗎?

JsonSerializer serializer = JsonSerializer.Create(settings); 
serializer.Converters.Add(new SomeConverter()); 
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer),() => serializer); 

SomeConverter不適用於傳入的服務器調用。

+0

你不會碰巧用SignalR依賴解析器重寫DependencyResolver? – Anders

+0

不,SomeConverter適用於撥出服務器電話。 – rtnm

+0

我有與NodaTime類型相同的問題作爲中心方法參數的屬性。我使用BrannonKing的修補程序鏈接到@ halter73s回答 – MemeDeveloper

回答

4

如您所述,這是JRawValue中的一個錯誤。目前已經申請了這個GitHub上這裏的一個問題:

https://github.com/SignalR/SignalR/issues/3304

問題的提出者是能夠通過提供自己的DefaultParameterResolver所使用反射來獲取在原始JSON字符串來解決它。

這顯然是非常不幸的,這是必要的。如果你願意,你可以在這個問題上發表評論,指出你看到這個問題修復是很重要的。這將增加錯誤在即將發佈的SignalR版本中被修復的可能性。

如果您對此問題發表評論,如果您留下評論,詳細說明您在服務器上使用的自定義(de)序列化設置以及您在客戶端上如何定製Hub參數序列化的方式,

+0

謝謝,我在等待故障排除 – rtnm