当我直接从VS2010运行我的应用程序时,Ninject初始化工作正常,但如果我将应用程序部署到我们的自定义“插件”环境,我在运行应用程序时会出现此错误并尝试初始化Ninject。
初始化期间出错
错误:不支持给定路径的格式。
类型:NotSupportedException
位置:System.String CanonicalizePath(System.String,Boolean)
堆栈跟踪:
在System.Security.Util.StringExpressionSet.CanonicalizePath(String path,Boolean needFullPath)
在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)
在System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access,String [] pathList,Boolean checkForDuplicates,Boolean needFullPath)
在System.IO.Path.GetFullPath(String path)
在Ninject.Modules.ModuleLoader.NormalizePath(String path)
在Ninject.Modules.ModuleLoader.GetFilesMatchingPattern(String pattern)
在Ninject.Modules.ModuleLoader.b_ 0(字符串模式)
在System.Linq.Enumerable.d _14 2.MoveNext()
at System.Linq.Lookup
2.Create [TSource](IEnumerable 1 source, Func
2 keySelector,Func 2 elementSelector, IEqualityComparer
1 comparer)
在System.Linq.GroupedEnumerable 3.GetEnumerator()
at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable
1个模式)
在Ninject.KernelBase.Load(IEnumerable`1 filePatterns)
在Ninject.KernelBase..ctor(IComponentContainer组件,INinjectSettings设置,INinjectModule []模块)
在Ninject.KernelBase..ctor(INinjectModule []模块)
at MyApp.Ioc.ResolveType.Initialize()
在MyApp.Program.Run()
答案 0 :(得分:2)
堆栈跟踪看起来有点不同,但是这看起来类似于我在NInject尝试加载可能存在的任何NInject扩展时遇到的问题,但由于扩展目录不存在而失败。
如果目录存在,那么我认为即使目录为空,代码也能正常工作。
我建议修改你的NInject设置对象,使它默认不加载扩展。(你必须将它传递给你的StandardKernel构造函数,而不是使用隐式构造的默认NInject设置)。
示例:
var settings = new NinjectSettings();
settings.LoadExtensions = false;
var kernel = new StandardKernel(settings);
kernel.load<YourCustomBindingModuleIfAny>();