0

当我直接从 VS2010 运行我的应用程序时,Ninject 初始化工作正常,但是如果我将应用程序部署到我们的自定义“插件”环境,当我运行应用程序并尝试初始化 Ninject 时,我会收到此错误。

初始化过程中发生错误

不支持给定路径的格式。

错误:不支持给定路径的格式。类型:NotSupportedException 位置:System.String CanonicalizePath(System.String, Boolean) 堆栈跟踪:在 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。0(字符串模式)在 System.Linq.Enumerable.d _14 2.Create 2.MoveNext() at System.Linq.Lookup[TSource](IEnumerable 1 source, Func2 keySelector,Func 2 elementSelector, IEqualityComparer1 比较器)在 System.Linq.GroupedEnumerable 3.GetEnumerator() at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable1 模式)在 Ninject.KernelBase.Load(IEnumerable`1 filePatterns)在 Ninject.KernelBase..ctor(IComponentContainer components, INinjectSettings settings, INinjectModule[] modules) 在 Ninject.KernelBase..ctor(INinjectModule[] modules) 在 MyApp.Ioc.ResolveType.Initialize() 在 MyApp.Program.Run()

4

1 回答 1

2

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

如果目录存在,那么我假设代码可以正常工作,即使目录是空的。

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

例子:

var settings = new NinjectSettings();
settings.LoadExtensions = false;
var kernel = new StandardKernel(settings);
kernel.load<YourCustomBindingModuleIfAny>();
于 2011-02-13T23:22:30.377 回答