2
我有拉從MEF容器的接口的實現自定義模型粘合劑。它的實現如下:如何返回HTTP狀態代碼的形式自定義模型綁定
public class PetViewModelBinder : DefaultModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var petId = bindingContext.ValueProvider.GetValue("id");
var container = controllerContext.HttpContext.Application[MvcApplication.PLUGINS] as CompositionContainer;
Lazy<IPet, IPetMetadata> pet = null;
try
{
pet = container.GetExport(typeof(IPet), petId);
var petVM = new Models.PetViewModel(pet);
bindingContext.ModelMetadata.Model = petVM;
return base.BindModel(controllerContext, bindingContext);
}
catch (Exception)
{
throw;
}
finally
{
container.ReleaseExport(pet);
}
}
這工作出色當MEF具有petId的出口......但返回HTTP狀態500(服務器錯誤)當出口不存在。錯誤消息混淆要求指示應該返回http狀態403(禁止)。
可以做些什麼來捕獲錯誤,更改響應狀態,並且不返回內容,或重新路由Action來處理這種情況?
謝謝!這當然給了我一個不同的方式來看問題。全局錯誤處理在這個項目上不起作用,但是,自定義錯誤處理程序應該工作。 – psaxton