不支持 Ninject 给定路径的格式
当我直接从 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.Lookup
2.Create[TSource](IEnumerable1 源、Func
2 keySelector、Func2 elementSelector、IEqualityComparer
1 比较器) 在 System.Linq.GroupedEnumerable3.GetEnumerator() 在 Ninject.Modules.ModuleLoader.LoadModules(IEnumerable
1 模式) 在 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()
2.Create[TSource](IEnumerable
at System.Linq.Lookup1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer)
at System.Linq.GroupedEnumerable3.GetEnumerator()
1 patterns)
at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
堆栈跟踪看起来有点不同,但这看起来类似于我在 NInject 尝试加载任何可能存在的 NInject 扩展时遇到的问题,但由于扩展目录不存在而失败。
如果该目录存在,那么我认为即使该目录为空,代码也能正常工作。
我建议修改您的 NInject 设置对象,以便它默认情况下不加载扩展。(您必须将其传递给 StandardKernel 构造函数,而不是使用隐式构造的默认 NInject 设置)。
例子:
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: