WebActivatorEx在应用程序启动时引发ArgumentException

本文关键字:ArgumentException 启动 应用程序 WebActivatorEx | 更新日期: 2023-09-27 17:59:38

安装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。

我在网上找不到任何可以说明问题所在的东西。我尝试在Pharma.Mvc命名空间中使用名为Configuration的静态方法创建一个Startup类,但似乎无法解决问题。

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

当我构建应用程序时,我的目标是ASP.NET 4.5.1 Framework,但我注意到在底部的堆栈跟踪中,它读取Microsoft .NET 4 Framework Version:4.0.30319,我不确定这是否正确。

WebActivatorEx在应用程序启动时引发ArgumentException

我使用的是带有WebApi的OWIN中间件,因此需要一个具有以下assembly属性的Startup类[程序集:OwinStartup(启动类型)]

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

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

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