EpiServer CMS 5 R2:自定义页面提供程序拒绝加载

时间:2009-02-02 10:18:10

标签: configuration episerver

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

我让示例页面提供程序正常工作并加载。我还确保我拥有企业开发人员许可证,因为该功能仅适用于此许可证。

所以我已经完成了我的页面提供程序的框架实现,并在我的测试站点上将信息输入到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属性是指什么?我无法在任何地方找到令人满意的解释。当我点击页面时,我看到以下内容。

  

发生错误2/2/2009 10:07:26 AM   用户IP fe80 :: d0e0:16bf:c536:ad4d%10   用户代理Mozilla / 4.0(兼容;   MSIE 7.0; Windows 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   Referer(无)

     

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

     

堆栈追踪:

     

[TypeInitializationException:类型   初始化器   'EPiServer.DataFactory'扔了一个   例外。]   EPiServer.Web.InitializationModule.Initialize(EPiServerSection   配置,设置设置,   ConnectionStringSettingsCollection   connectionStringSettings)at   EPiServer.Web.InitializationModule.StaticInitialization()   在   EPiServer.Web.InitializationModule.Application_BeginRequest(对象   发件人,EventArgs e)at   System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   在   System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔&amp; completedSynchronously)

     

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

正如你所看到的,这是相当无益的。我已经尝试获得另一个许可证,重置IIS,重启盒子,试图找出使用反射器查看EpiServer DataFactory中的代码的情况,但都无济于事。

我知道这很简单,但是什么?!现在已经让我温和地疯了大约两天了。

Plaps Halp!

1 个答案:

答案 0 :(得分: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>

我们一切都在努力......

错误消息传递的另一个例子。它应该说“找不到类型”会省去很多麻烦。

相关问题