Композитный C1 не генерирует sitemap.xml

Быстрые характеристики:
Композит С1 4.1
Windows 2003 Server
IIS 6
.NET Framework 4.0
Все, что новее, не будет работать на моем старом сервере.

Я пытался получить доступ к sitemap.xml моего сайта (прямая ссылка), но он продолжает выдавать ошибку 404. Я просмотрел Интернет, но единственное, что я могу найти в карте сайта, - это страница руководства Composite, в которой говорится, что нужно изменить мой web.config, и все должно быть решено, и он сгенерирует sitemap.xml для меня. Это, однако, не так для меня, я что-то упустил? Пока я проверил следующее:

  • Страница 404 в IIS ссылается на /Renderers/FileNotFoundHandler.ashx
  • System.web и sytem.webserver (последний из них бесполезен для IIS6, насколько я помню) имеют настройки, указанные в руководстве.
  • Композит С1 имеет правильные права на сервере
  • robots.txt имеет правильную ссылку на карту сайта
  • Пользовательский режим ошибки установлен на Remote Only, и я получаю к нему удаленный доступ.
  • Не удалось найти пакет Composite.AspNet.SitemapHandler в доступных пакетах

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <!-- Hey Dev! Changing or removing existing elements in this file may cause functionality in Composite C1 to break -->
  <system.web>
    <trust level="Full" />
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    <customErrors mode="RemoteOnly">
      <error statusCode="404" redirect="Renderers/FileNotFoundHandler.ashx" />
  </customErrors>
  <compilation debug="false" optimizeCompilations="false">
   <assemblies>
    <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Workflow.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   </assemblies>
      <buildProviders>
        <add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor" />
      </buildProviders>
  </compilation>
  <httpRuntime relaxedUrlToFileSystemMapping="true" requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\,?" /> <!-- colon removed from @requestPathInvalidCharacters -->
  <xhtmlConformance mode="Strict" />
  <trace enabled="false" traceMode="SortByTime" requestLimit="100" writeToDiagnosticsTrace="false" pageOutput="true" />
  <pages clientIDMode="AutoID">
      <controls>
        <add tagPrefix="f" namespace="Composite.Plugins.PageTemplates.MasterPages.Controls.Functions" assembly="Composite" />
        <add tagPrefix="c1" namespace="Composite.Plugins.PageTemplates.MasterPages.Controls.Rendering" assembly="Composite" />
      </controls>
    </pages>
  <!--  IIS6 & IIS7 Clasic mode -->
  <httpModules>
   <add name="ApplicationOfflineCheck" type="Composite.Core.Application.ApplicationOfflineCheckHttpModule, Composite" />
   <add name="AjaxResponseHandler" type="Composite.Core.WebClient.Ajax.AjaxResponseHttpModule, Composite" />
   <add name="CompositeAdministrativeResponseFilter" type="Composite.Core.WebClient.HttpModules.AdministrativeResponseFilterHttpModule, Composite" />
   <add name="CompositeAdministrativeAuthorization" type="Composite.Core.WebClient.HttpModules.AdministrativeAuthorizationHttpModule, Composite" />
   <add name="CompositeRequestInterceptor" type="Composite.Core.WebClient.Renderings.RequestInterceptorHttpModule, Composite" />
   <add name="CompositeAdministrativeDataScopeSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeDataScopeSetterHttpModule, Composite" />
   <add name="CompositeAdministrativeCultureSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeCultureSetterHttpModule, Composite" />
  </httpModules>
  <caching>
   <outputCacheSettings>
    <outputCacheProfiles>
     <add name="C1Page" duration="60" varyByCustom="C1Page" varyByParam="*" />
    </outputCacheProfiles>
   </outputCacheSettings>
  </caching>
    <httpHandlers>
      <add verb="GET" path="sitemap.xml" type="Composite.AspNet.SiteMapHandler, Composite" />
    </httpHandlers>
    <siteMap defaultProvider="CompositeC1">
      <providers>
        <add name="CompositeC1" type="Composite.AspNet.CompositeC1SiteMapProvider, Composite" />
      </providers>
    </siteMap>
  </system.web>
 <system.codedom>
  <compilers>
   <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/warnaserror-" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v4.0" />
   </compiler>
   <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" compilerOptions="/optioninfer+" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v4.0" />
   </compiler>
  </compilers>
 </system.codedom>
 <!-- IIS7 Intergrated mode configuration -->
 <system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true">
   <remove name="UrlRoutingModule"/>
   <add name="ApplicationOfflineCheck" type="Composite.Core.Application.ApplicationOfflineCheckHttpModule, Composite" />
   <add name="AjaxResponseHandler" type="Composite.Core.WebClient.Ajax.AjaxResponseHttpModule, Composite" />
   <add name="CompositeAdministrativeResponseFilter" type="Composite.Core.WebClient.HttpModules.AdministrativeResponseFilterHttpModule" />
   <add name="CompositeAdministrativeAuthorization" type="Composite.Core.WebClient.HttpModules.AdministrativeAuthorizationHttpModule, Composite" />
   <add name="CompositeRequestInterceptor" type="Composite.Core.WebClient.Renderings.RequestInterceptorHttpModule, Composite" />
   <add name="CompositeAdministrativeDataScopeSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeDataScopeSetterHttpModule, Composite" />
   <add name="CompositeAdministrativeCultureSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeCultureSetterHttpModule, Composite" />
   <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </modules>
  <handlers>
      <add name="SiteMap" verb="GET" path="sitemap.xml" type="Composite.AspNet.SiteMapHandler, Composite" />
   <add name="Wildcard ASP.NET mapping" preCondition="classicMode,runtimeVersionv4.0,bitness32" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" />
   <add name="Wildcard ASP.NET mapping (x64)" preCondition="classicMode,runtimeVersionv4.0,bitness64" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" />
   <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </handlers>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
    </staticContent>
    <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" />
  </system.webServer>
  <system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
</configuration>

1 ответ

Ошибка моего файла Sitemap при использовании нескольких привязок имени хоста с одним и тем же HomePageId и Culture:/

Это может или не может совпадать с вашей проблемой, но это именно то, что я сделал, чтобы иметь одинаковую конфигурацию (страница 404 и т. Д.) Во всех моих средах:

несколько привязок имени хоста

Учитывая детали ошибки, вот что я получаю:

подробности об ошибке

Исходный код доступен по адресу https://compositec1.codeplex.com/SourceControl/latest - так я узнал, как "исправить" мою проблему.

Мой сайт сейчас в порядке, поэтому я могу с уверенностью закомментировать свои непроизводственные записи в App_Data\Composite\DataStores\Composite.Data.Types.IHostnameBinding.xml, что снова дает мне полностью работающий генератор Sitemap:]

Я попытался "обмануть" ошибочную функцию, изменив Культуру (например, Культура не по умолчанию или изменив регистр строки) или HomePageId (например, идентификатор не домашней страницы), однако я столкнулся с некоторыми другими проблемами. затем:\

Другие вопросы по тегам