asp.net - Need help troubleshooting TypeLoadException at .NET webapi2 application startup -


i have working webapi2 application, references common/shared library assemblies own. shared libraries have different repository , published nuget packages during build process. recently, updated nuget package references webapi2 application more recent versions common packages. newer version of 1 of assemblies, microsoft.icm.common.web, no longer has attribute, webapiexceptionhandlerattribute. so, when building webapi2 application, got rid of references attribute in our webapi2 controllers classes. when rebuilt application , deployed 1 of our staging environments, see following typeload exception:

message: not load type 'microsoft.icm.common.web.webapiexceptionhandlerattribute' assembly 'microsoft.icm.common.web, version=2.4.0.0, culture=neutral, publickeytoken=null'.

stacktrace: @ system.modulehandle.resolvetype(runtimemodule module, int32 typetoken, intptr* typeinstargs, int32 typeinstcount, intptr* methodinstargs, int32 methodinstcount, objecthandleonstack type) @ system.modulehandle.resolvetypehandleinternal(runtimemodule module, int32 typetoken, runtimetypehandle[] typeinstantiationcontext, runtimetypehandle[] methodinstantiationcontext) @ system.reflection.runtimemodule.resolvetype(int32 metadatatoken, type[] generictypearguments, type[] genericmethodarguments) @ system.reflection.customattribute.filtercustomattributerecord(customattributerecord carecord, metadataimport scope, assembly& lastaptcaokassembly, runtimemodule decoratedmodule, metadatatoken decoratedtoken, runtimetype attributefiltertype, boolean mustbeinheritable, object[] attributes, ilist derivedattributes, runtimetype& attributetype, iruntimemethodinfo& ctor, boolean& ctorhasparameters, boolean& isvararg) @ system.reflection.customattribute.getcustomattributes(runtimemodule decoratedmodule, int32 decoratedmetadatatoken, int32 pcacount, runtimetype attributefiltertype, boolean mustbeinheritable, ilist derivedattributes, boolean isdecoratedtargetsecuritytransparent) @ system.reflection.customattribute.getcustomattributes(runtimetype type, runtimetype catype, boolean inherit) @ system.web.http.controllers.httpcontrollerdescriptor.invokeattributesoncontrollertype(httpcontrollerdescriptor controllerdescriptor, type type) @ system.web.http.controllers.httpcontrollerdescriptor..ctor(httpconfiguration configuration, string controllername, type controllertype) @ system.web.http.dispatcher.defaulthttpcontrollerselector.initializecontrollerinfocache() @ system.lazy1.createvalue() @ system.lazy1.lazyinitvalue() @ system.web.http.dispatcher.defaulthttpcontrollerselector.getcontrollermapping() @ system.web.http.routing.attributeroutingmapper.addrouteentries(subroutecollection collector, httpconfiguration configuration, iinlineconstraintresolver constraintresolver, idirectrouteprovider directrouteprovider) @ system.web.http.routing.attributeroutingmapper.<>c__displayclass2.<>c__displayclass4.b__1() @ system.web.http.routing.routecollectionroute.ensureinitialized(func`1 initializer) @ system.web.http.routing.attributeroutingmapper.<>c__displayclass2.b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ system.web.odata.routing.conventions.attributeroutingconvention.<>c__displayclass1.<.ctor>b__0(httpconfiguration config) @ microsoft.azuread.icm.icmv3odata.global.initialize() in e:\bt\787852\repo\src\odata\icmv3odata\global.asax.cs:line 66 @ microsoft.azuread.icm.icmv3odata.preloadinitializationclient.preload(string[] parameters) in e:\bt\787852\repo\src\odata\icmv3odata\app_start\preloadinitializationclient.cs:line 40 @ system.web.hosting.preloadhost.createiprocesshostpreloadclientinstanceandcallpreload(string preloadobjtypename, string[] paramsforstartupobj) @ system.web.hosting.preloadhost.createiprocesshostpreloadclientinstanceandcallpreload(string preloadobjtypename, string[] paramsforstartupobj) @ system.web.hosting.processhost.preloadapplicationifrequired(string appid, iapplicationhost apphostparameter, hostingenvironmentparameters hostingparameters, lockableappdomaincontext ac)'. worker process marked unhealthy , shutdown. data field contains error code.

even though built webapi2 application should no longer have references unavailable webapiexceptionhandlerattribute (in newer microsoft.icm.common.web assembly), when running application, looks somehow unavailable attribute being used. have used tools resharper's dotnetpeek , searched term "webapiexceptionhandlerattribute" in binplaced assemblies , don't see matches attribute. so, how figure out why web application still trying locate type @ application startup?

i have identified root cause of issue. looks had stale assembly in bin folder webapi2 application, had been deprecated 3 months , no longer generated when application built. stale assembly had references defunct attribute. once removed stale assembly iis webapi2 application folder, things started working fine.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -