Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当API控制器创建失败时处理MVC4中的异常?_C#_Asp.net Mvc_Asp.net Mvc 4_Error Handling_Asp.net Web Api - Fatal编程技术网

C# 当API控制器创建失败时处理MVC4中的异常?

C# 当API控制器创建失败时处理MVC4中的异常?,c#,asp.net-mvc,asp.net-mvc-4,error-handling,asp.net-web-api,C#,Asp.net Mvc,Asp.net Mvc 4,Error Handling,Asp.net Web Api,我在创建api控制器时出错,因为我没有为webapi设置autofac 然而,我似乎无法在任何地方捕捉到异常。 <Error> <Message>An error has occurred.</Message> <ExceptionMessage> Type 'MyWeb.Web.Controllers.MyController' does not have a default constructor </ExceptionMessage&g

我在创建api控制器时出错,因为我没有为webapi设置autofac

然而,我似乎无法在任何地方捕捉到异常。

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Type 'MyWeb.Web.Controllers.MyController' does not have a default constructor
</ExceptionMessage>
<ExceptionType>System.ArgumentException</ExceptionType>
<StackTrace>
at System.Linq.Expressions.Expression.New(Type type) at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType) at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator) at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
</StackTrace>
</Error>
没有让elmah注册成为例外。 我在global.asax中添加了以下内容:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
}
没有任何区别


如何处理调用控制器之前发生的错误?

我想知道此异常是否只是添加到HttpResponseMessage的内容中,而不是作为异常抛出。当实现在构造函数实例化期间使用的依赖项解析器类时,尝试解析、捕获异常并返回
null
通常是有意义的

例如,在非API MVC控制器中,我经常使用如下内容:


我想知道这个异常是否只是添加到HttpResponseMessage的内容中,而不是作为异常抛出。当实现在构造函数实例化期间使用的依赖项解析器类时,尝试解析、捕获异常并返回
null
通常是有意义的

例如,在非API MVC控制器中,我经常使用如下内容:


如果是的话,这是有道理的。我很快就要阅读mvc源代码了。如果真是这样的话,它是有意义的。我将很快阅读mvc源代码。
protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
}
public class UnityDependencyResolver : IDependencyResolver
{
    public readonly IUnityContainer Container;

    public UnityDependencyResolver(IUnityContainer container)
    {
        Container = container;
    }

    #region IDependencyResolver Members

    public object GetService(Type serviceType)
    {
        try
        {
            return Container.Resolve(serviceType);
        }
        catch (Exception ex)
        {
            if (ex.InnerException is TypeInitializationException)
                throw ex.InnerException;

            return null;
        }
    }
    ...