【问题标题】:EpiServer CMS 5 R2: Custom Page Provider refuses to loadEpiServer CMS 5 R2:自定义页面提供程序拒绝加载
【发布时间】:2009-02-02 10:18:09
【问题描述】:

我最近开始使用 EpiServer 开展一个新项目,我对它完全陌生。我的一项任务要求我编写一个自定义页面提供程序。

我已经让示例页面提供程序工作并加载。我还确保我拥有 Enterprise Developer 许可证,因为该功能仅适用于该许可证。

所以我已经完成了我的页面提供程序的框架实现,并将信息输入到我的测试站点上的 web.config 中,就像 XmlPageProvider 示例一样:

    <pageProvider>
      <providers>
        <add entryPoint="26" capabilities="Create,Edit,Delete,Move,MultiLanguage" 
          name="custom" type="MyWebsite.CustomProvider,CustomPageProvider" />
  <!--  <add filePath="~/externalPages.xml" entryPoint="26" capabilities="Create,Edit"
          name="xml" type="CodeSamples.XmlPageProvider,XmlPageProvider" />-->
      </providers>
    </pageProvider>

当我们在这里时,entryPoint 属性指的是什么?我在任何地方都找不到令人满意的解释。当我点击页面时,我看到以下内容。

2009 年 2 月 2 日上午 10:07:26 发生错误 用户 IP fe80::d0e0:16bf:c536:ad4d%10 用户代理 Mozilla/4.0(兼容; MSIE 7.0;视窗 NT 6.0; SLCC1; 。网 CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) 网址http://ioc-dev-uk5:17003/cms/admin/default.aspx 推荐人(无)

异常详情: TypeInitializationException:类型 初始化器 'EPiServer.DataFactory' 抛出了一个 例外。

堆栈跟踪:

[TypeInitializationException: 类型 初始化器 'EPiServer.DataFactory' 抛出了一个 例外。] 在 EPiServer.Web.InitializationModule.Initialize(EPiServerSection 配置,设置设置, 连接字符串设置集合 连接字符串设置)在 EPiServer.Web.InitializationModule.StaticInitialization() 在 EPiServer.Web.InitializationModule.Application_BeginRequest(对象 发件人,EventArgs e) 在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously)

[内部异常ArgumentException: 无法创建类型的实例 MyWebsite.CustomProvider,CustomPageProvider] 在 EPiServer.Core.PageProviderMap.AddPageProvider(ProviderSettings pageProviderSetting) 在 EPiServer.Core.PageProviderMap.LoadPageProviders(ProviderSettingsCollection pageProvidersCollection) 在 EPiServer.Core.PageProviderMap..ctor(ProviderSettingsCollection pageProviders) 在 EPiServer.DataFactory..cctor()

如您所见,这是相当无用的。我尝试过获得另一个许可证,重置 IIS,重新启动机器,尝试使用反射器查看 EpiServer DataFactory 中的代码,但均无济于事。

我知道这很简单,但是什么?!大约 2 天来,这让我有点发疯了。

请停下来!

【问题讨论】:

    标签: configuration episerver


    【解决方案1】:

    我想我自己来回答这个问题。

    真的很简单。

    用反光板进去发现这个:

    private void AddPageProvider(ProviderSettings pageProviderSetting)
    {
        if (Type.GetType(pageProviderSetting.Type) == null)
        {
            throw new ArgumentException("Cannot create an instance of type " + pageProviderSetting.Type);
        }
        PageProviderBase pageProvider = this.CreatePageProviderInstance(pageProviderSetting);
        pageProvider.Initialize(pageProviderSetting.Name, pageProviderSetting.Parameters);
        if (this._pageProviders.ContainsKey(UrlSegment.ReplaceIllegalChars(pageProvider.Name)))
        {
            throw new ArgumentException(string.Format("There is already a page provider with name {0} registered", pageProvider.Name));
        }
        this.AddPageProvider(pageProvider, false);
    }
    

    类型名称需要完整的命名空间,所以我的 web.config 现在看起来像:

    <pageProvider>
      <providers>
        <add entryPoint="26" capabilities="Create,Edit,Delete,Move,MultiLanguage" 
          name="custom" type="MyWebsite.CustomProvider,MyWebsite.CustomProvider.CustomPageProvider" />
      </providers>
    </pageProvider>
    

    我们都在工作......

    另一个错误消息的例子。它应该说“Could not locate type”会省去很多麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多