Ninject Given Path's format is not supported
The Ninject initialization works fine when i run my application directly from VS2010, but if I deploy the application to our custom "plugin" environment I get this error when I run the app and it tries to initialize Ninject.
Error during initialization
The given path's format is not supported.
ERROR : The given path's format is not supported.
Type : NotSupportedException
Location: System.String CanonicalizePath(System.String, Boolean)
Stack Trace:
at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
at System.IO.Path.GetFullPath(String path)
at Ninject.Modules.ModuleLoader.NormalizePath(String path)
at Ninject.Modules.ModuleLoader.GetFilesMatchingPattern(String pattern)
at Ninject.Modules.ModuleLoader.b_0(String pattern)
at System.Linq.Enumerable.d_142.MoveNext()
at System.Linq.Lookup
2.Create[TSource](IEnumerable1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer)
at System.Linq.GroupedEnumerable3.GetEnumerator()
at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable
1 patterns)
at Ninject.KernelBase.Load(IEnumerable`1 filePatterns)
at Ninject.KernelBase..ctor(IComponentContainer com开发者_如何学JAVAponents, INinjectSettings settings, INinjectModule[] modules)
at Ninject.KernelBase..ctor(INinjectModule[] modules)
at MyApp.Ioc.ResolveType.Initialize()
at MyApp.Program.Run()
The stack trace looks a bit different, however this looks similar to an issue I had when NInject would attempt to load any NInject extensions that might exist, but fail because the extensions directory did not exist.
If the directory exists, then I assume that the code would work fine, even if the directory is empty.
I suggest modifying your NInject settings object so that it does not load the extensions by default.(you'll have to pass it in to your StandardKernel constructor, rather than using the default NInject settings that is implicitly constructed).
Example:
var settings = new NinjectSettings();
settings.LoadExtensions = false;
var kernel = new StandardKernel(settings);
kernel.load<YourCustomBindingModuleIfAny>();
精彩评论