不支持Ninject Given Path的格式

时间:2010-12-28 21:19:37

标签: ninject ninject-2

当我直接从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()

1 个答案:

答案 0 :(得分:2)

堆栈跟踪看起来有点不同,但是这看起来类似于我在NInject尝试加载可能存在的任何NInject扩展时遇到的问题,但由于扩展目录不存在而失败。

如果目录存在,那么我认为即使目录为空,代码也能正常工作。

我建议修改你的NInject设置对象,使它默认不加载扩展。(你必须将它传递给你的StandardKernel构造函数,而不是使用隐式构造的默认NInject设置)。

示例:

var settings = new NinjectSettings();
settings.LoadExtensions = false;
var kernel = new StandardKernel(settings);
kernel.load<YourCustomBindingModuleIfAny>();