WebActivatorEx在Application Start上导致ArgumentException

时间:2015-06-25 15:24:28

标签: c# asp.net webactivator

在安装WebActivatorEx nuget包后尝试访问页面时,我一直收到以下ArgumentException。

Server Error in '/PharmaDotnet/ux' Application.
The type Pharma.Mvc.Startup doesn't have a static method named Configuration
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: The type Pharma.Mvc.Startup doesn't have a static method named Configuration

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[ArgumentException: The type Pharma.Mvc.Startup doesn't have a static method named Configuration]
   WebActivatorEx.BaseActivationMethodAttribute.InvokeMethod() +166
   WebActivatorEx.ActivationManager.RunActivationMethods(Boolean designerMode) +445
   WebActivatorEx.ActivationManager.Run() +105

[InvalidOperationException: The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: The type Pharma.Mvc.Startup doesn't have a static method named Configuration.]
   System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +12981643
   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +12981352
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +280
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +172
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1151

[HttpException (0x80004005): The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: The type Pharma.Mvc.Startup doesn't have a static method named Configuration.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12980692
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12820285


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34249 

如果删除WebActivatorEx软件包,一切都会再次运行,但我需要WebActivatorEx才能使用DI。

我在网上找不到任何建议可能是什么问题。我尝试使用名为Startup的静态方法在Pharma.Mvc命名空间中创建Configuration类,但这似乎不能解决问题。

此外,在我安装软件包之前,没有Pharma.Mvc命名空间,也没有Startup类。所以我真的很困惑为什么会这样。

我在构建应用程序时瞄准ASP.NET 4.5.1框架但是我注意到在底部的堆栈跟踪中它读取Microsoft .NET 4 Framework Version:4.0.30319并且我不确定这是否正确或不

2 个答案:

答案 0 :(得分:14)

我正在使用带WebApi的OWIN中间件,因此需要具有以下程序集属性的Startup类 [assembly:OwinStartup(typeof(Startup))]

我还为WebApi使用Swagger接口,并通过nuget包安装它。安装添加了SwaggerConfig类,其中包含以下程序集属性 [assembly:PreApplicationStartMethod(typeof(SwaggerConfig)," Register")]

启动WebApi时,程序集属性导致此异常。我从SwaggerConfig类中删除了assembly属性,一切正常。

答案 1 :(得分:4)

原来是bin文件夹中的旧程序集,不再引用它,导致问题。