我们正在使用WebApi v2.1并通过WebApiConfig类中应用的过滤器验证ModelState .
我们在服务器(Win Server 2008R2)上运行时,错误消息中未列出指定为必需的字段,但是当我们在本地运行时(在IISExpress上)它们可以正常工作 .
请求在本地和服务器上被正确拒绝,但服务器响应不显示缺少的字段 .
例如:给定缺少所需缩写和issuerName字段的本地请求,响应显示为预期:
{“message”:“请求无效 . ”,“modelState”:{“value”:[“在JSON中找不到必需属性'缩写' . 路径'',第18行,第2位 . ”,“必需属性在JSON中找不到'issuerName' . 路径'',第18行,第2位 . “ ]}
当相同的请求发送到服务器时,响应显示:
{“message”:“请求无效 . ”,“modelState”:{“value”:[“发生错误 . ”,“发生错误” . ]}}
我们的过滤器如下:
public class ValidateModelStateAttribute:ActionFilterAttribute {public override void OnActionExecuting(HttpActionContext actionContext){if(!actionContext.ModelState.IsValid)}}
我们的数据模型类使用DataContract属性进行修饰,所需的字段的属性如下:
[DataMember(IsRequired=true)]
public string IssuerName
1 回答
服务器对于向客户端发送错误更具限制性 . 尝试在httpconfiguration上设置
IncludeErrorDetails
标志以验证这是否是潜在问题 .一般情况下,虽然打开此标志并不是最好的主意,但您需要以不同方式将错误序列化 .
欲了解更多信息:http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx