不支持 Ninject 给定路径的格式

发布于 2024-10-09 04:10:03 字数 1581 浏览 10 评论 0原文

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

初始化期间出错

不支持给定路径的格式。

错误:不支持给定路径的格式。 类型:NotSupportedException 位置:System.String CanonicalizePath(System.String, Boolean) 堆栈跟踪: 在 System.Security.Util.StringExpressionSet.CanonicalizePath(字符串路径,布尔值 needFullPath) 在 System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) 在System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess访问,AccessControlActions控制,String [] pathListOrig,布尔checkForDuplicates,布尔needFullPath,布尔copyPathList) 在 System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess 访问,String[] pathList,布尔值 checkForDuplicates,布尔值 needFullPath) 在 System.IO.Path.GetFullPath(字符串路径) 在 Ninject.Modules.ModuleLoader.NormalizePath(字符串路径) 在 Ninject.Modules.ModuleLoader.GetFilesMatchingPattern(字符串模式) 在 Ninject.Modules.ModuleLoader.b_0(字符串模式) 在 System.Linq.Enumerable.d_142.MoveNext() 在 System.Linq.Lookup2.Create[TSource](IEnumerable1 源、Func2 keySelector、Func2 elementSelector、IEqualityComparer1 比较器) 在 System.Linq.GroupedEnumerable3.GetEnumerator() 在 Ninject.Modules.ModuleLoader.LoadModules(IEnumerable1 模式) 在 Ninject.KernelBase.Load(IEnumerable`1 filePatterns) 在 Ninject.KernelBase..ctor(IComponentContainer 组件、INinjectSettings 设置、INinjectModule[] 模块) 在 Ninject.KernelBase..ctor(INinjectModule[] 模块) 在 MyApp.Ioc.ResolveType.Initialize() 在 MyApp.Program.Run()

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, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 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 components, INinjectSettings settings, INinjectModule[] modules)
at Ninject.KernelBase..ctor(INinjectModule[] modules)
at MyApp.Ioc.ResolveType.Initialize()
at MyApp.Program.Run()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谜兔 2024-10-16 04:10:03

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

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

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

例子:

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

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>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文