当尝试调用采用枚举作为输入参数的 Web API 方法时,为什么会出现下面屏幕截图中的错误?我该如何解决这个问题?
看起来像messageDestinationType
无论我做什么始终为空......
我更愿意将输入类型保留为枚举。我对使用 Web api 很陌生,无法理解当 WCF 完美处理这种情况时,这怎么会如此困难
[JsonConverter(typeof(StringEnumConverter))]
public enum MessageDestinationType
{
None = 0,
[EnumMember(Value = "SMS")]
SMS = 1,
[EnumMember(Value = "Email")]
Email = 2,
PushNotification = 3,
UXP = 4,
IntermediaryApp = 5,
YouthApp = 6
}
[HttpPost, Route("ReadClientMessagesC")]
public IHttpActionResult ReadClientMessagesC([FromBody]MessageDestinationType messageDestinationType)
{
var request = new ClientInboxRequest
{
Gcn = Gcn,
ClientIpAddress = ClientIpAddress,
CallingApplication = CallingApplication.Name,
CallingApplicationVersion = CallingApplication.Version,
CookieString = CookieString,
HasPbUk = HasPbUk,
HasIamIms = HasIamIms,
HasPbZa = HasPbZa,
HasSps = HasSps,
HasWiUk = HasWiUk,
HasWiZa = HasWiZa,
LinkedGcns = LinkedGcns,
RequestId = RequestId.ToString(),
SsoProfiles = SsoProfiles.Select(x => x.Name).ToList()
};
MessageDestinationType messageDestination = (MessageDestinationType)messageDestinationType;
return Ok(ClientMessageCenterHelper.ReadClientMessagesA(Gcn, messageDestination, request));
}
错误信息: {
"Message": "请求无效。",
"MessageDetail": "参数字典包含方法 'System.Web.Http.IHttpActionResult ReadClientMessagesC(API.Domain.ClientMessageCenter.MessageDestinationType' 的不可空类型 'API.Domain.ClientMessageCenter.MessageDestinationType' 的参数 'messageDestinationType' 的空条目)' in 'ID.ClientMessageCenter.Controllers.ClientMessageCenterController'。可选参数必须是引用类型、可为 null 的类型,或者声明为可选参数。”
}