4
我正在使用ServiceStack創建接受來自HTML表單(POST)的請求的服務。其中DTO屬性是一個枚舉,而當輸入不枚舉成員匹配,我得到以下異常:處理ServiceStack中的序列化異常
Error occured while Processing Request: KeyValueDataContractDeserializer: Error converting to type: Requested value 'MyValue' was not found.
System.Runtime.Serialization.SerializationException: KeyValueDataContractDeserializer: Error converting to type: Requested value 'MyValue' was not found. ---> System.ArgumentException: Requested value 'MyValue' was not found.
at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary`2 keyValuePairs)
我如何可以攔截這個異常並處理它自己在我的服務代碼?
感謝您提供非常詳細的回覆和偉大的建議。一個小小的評論 - 在我的情況下,我使用的是POST而不是GET,如問題所示,並且從ServiceBase繼承,覆蓋了Run方法,因此只需調整代碼示例以獲取DTO外部的值, d必須做 'var enumStr = base.RequestContext.Get()。FormData [「FormElementName」]' 這只是爲了幫助其他人試圖做同樣的事情。很高興知道SS的這個功能。 –
dawebber