Praveen と Janushirsha の以前の投稿は、私を正しい方向に導きます。ここで再開します。
// Not reliable in Release mode :
Type controllerType = typeof(ReferencedControllers.ControllerType);
したがって、次のように置き換える必要がありますIAssembliesResolver
。
HttpConfiguration config = new HttpConfiguration();
config.Services.Replace(typeof(IAssembliesResolver), new CustomAssembliesResolver());
の実装例を次に示します。CustomAssembliesResolver
using System.Web.Http.Dispatcher;
internal class CustomAssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<System.Reflection.Assembly> GetAssemblies()
{
var assemblies = base.GetAssemblies();
// Interestingly, if we push the same assembly twice in the collection,
// an InvalidOperationException suggests that there is different
// controllers of the same name (I think it's a bug of WebApi 2.1).
var customControllersAssembly = typeof(AnotherReferencedAssembly.MyValuesController).Assembly;
if (!assemblies.Contains(customControllersAssembly))
assemblies.Add(customControllersAssembly);
return assemblies;
}
}
このコードは、サード パーティのアセンブリが参照されていない場合や、アセンブリのバインディングが必要な場合に簡単に適用できます。
この助けを願っています。