MEF 컨테이너에서 인터페이스의 구현을 가져 오는 사용자 지정 모델 바인더가 있습니다. 다음과 같이이 구현됩니다 내보내기가 존재하지 않는 경우 MEF는 petId의 수출이 있습니다 ...하지만 HTTP 상태 500 (서버 오류)를 반환 할 때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);
}
}
이 화려하게 작동합니다. 오류 메시지 난독 처리 요구 사항에 따라 HTTP 상태 403 (금지됨)이 반환되어야합니다.
오류를 트래핑하고 응답 상태를 변경하고 콘텐츠를 반환하지 않거나이 상태를 처리하기 위해 동작의 경로를 변경하려면 어떻게해야합니까?
고마워요! 그것은 확실히 저에게 문제를 보는 다른 방법을 제공합니다. 이 프로젝트에서는 전역 오류 처리가 작동하지 않지만 사용자 지정 오류 처리기가 작동해야합니다. – psaxton