gpt4 book ai didi

caSTLe-monorail - 将 Monorail 从 v1.0.3 升级到 v2.1RC 后找不到 ViewComponent

转载 作者:行者123 更新时间:2023-12-04 07:04:04 26 4
gpt4 key购买 nike

我在我的 C# Web 应用程序中使用 Monorail。由于我升级了它(.Net Framework 2 到 4 和 Monorail 1.0.3 到 2.1RC),我的 ViewComponent 类没有找到。我所有的 Controller 似乎都工作正常。我正在使用 nVelocity View 引擎。我没有使用温莎,但也许现在我想以某种方式注册它?

在 .vm 文件中,我尝试了以下几行(没有成功,第一个在我升级项目之前正在工作):

 #component(MenuComponent)
#component(MenuComponent with "role=admins")
#blockcomponent(MenuComponent with "role=admins")

有人做过实验吗?

完整的错误信息是:

ViewComponent 'MenuComponent' could not be found. Was it registered? If you have enabled Windsor Integration, then it's likely that you have forgot to register the view component as a Windsor component. If you are sure you did it, then make sure the name used is the component id or the key passed to ViewComponentDetailsAttribute



非常感谢!

最佳答案

我终于找到了解决我问题的线索。我使用“CaSTLe.Monorail.Framework.dll”源代码来查看内部发生的情况:似乎在 Web.Config 文件中指定的程序集(在 <Controllers> 甚至在 <viewcomponents> 中)没有像它们一样被“检查”应该是因为包含它的变量初始化得太晚了。

我构建了一个新版本的 dll,现在它工作正常。我会将我的“固定”代码提交给 CaSTLe Project 社区,以确保它不是其他原因(如错误设置)的结果。

直到那时这是我的“修复”,我只是移动了一部分代码。您可以在这里找到原始源代码:http://www.symbolsource.org/Public/Metadata/Default/Project/Castle/1.0-RC3/Debug/All/Castle.MonoRail.Framework/Castle.MonoRail.Framework/Services/DefaultViewComponentFactory.cs

*Assembly:* Castle.MonoRail.Framework
*Class:* Castle.MonoRail.Framework.Services.**DefaultViewComponentFactory**


public override void Service(IServiceProvider provider)
{
/* Here is the section I moved */
var config = (IMonoRailConfiguration)provider.GetService(typeof(IMonoRailConfiguration));
if (config != null)
{
assemblies = config.ViewComponentsConfig.Assemblies;
if (assemblies == null || assemblies.Length == 0)
{
// Convention: uses the controller assemblies in this case
assemblies = config.ControllersConfig.Assemblies.ToArray();
}
}
/*******************************/

base.Service(provider); // Assemblies inspection is done there

var loggerFactory = (ILoggerFactory) provider.GetService(typeof(ILoggerFactory));
if (loggerFactory != null)
{
logger = loggerFactory.Create(typeof(DefaultViewComponentFactory));
}
/* The moved section was here */
}

关于caSTLe-monorail - 将 Monorail 从 v1.0.3 升级到 v2.1RC 后找不到 ViewComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com