我正在尝试查看传入请求的内容,因此我可以编写一个适当的对象来绑定到 JSON。
IIUC,我的通用提供程序和绑定代码应该在每个 POST 上执行,无论传入类型如何。
我看不到我错过了什么。我的 Binder 和 Provider 代码不执行。
我在这里定义了提供者和绑定器。
public class GenericModelBinderProvider: IModelBinderProvider
{
public IModelBinder GetBinder(Type modelType)
{
return new GenericModelBinder(); // breakpoint
}
}
public class GenericModelBinder: IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
try // breakpoint
{
//1.
var model = bindingContext.ModelType;
//2.
var data = new XmlSerializer(model);
//3.
var receivedStream = controllerContext.HttpContext.Request.InputStream;
//4.
return data.Deserialize(receivedStream);
}
catch (Exception ex)
{
bindingContext.ModelState.AddModelError("Error", "Received Model cannot be serialized");
return null;
}
}
}
我在启动时注册它。这个断点确实被击中。
ModelBinderProviders.BinderProviders.Insert(0, new GenericModelBinderProvider());
或者
ModelBinders.Binders.Add(typeof(object), new GenericModelBinder());