Маршрут Combres (combres.axd) не работает

Я следил за статьей http://www.codeproject.com/KB/aspnet/combres2.aspx.

Когда я запускаю свой сайт, я не могу заставить работать combres.axd? Я знаю, что работает combres, так как неправильный файл в моем xml вызовет ошибку. Я использую сайт ASP.NET 4.0 веб-форм на Vista.

Мои настройки Combres XML есть.

resourceSets url="~/combres.axd" defaultDuration="30" defaultVersion="auto" defaultDebugEnabled="auto"

Я проверил web.config для всех правильных значений. Ссылка была добавлена ​​из каталога слияния, и глобальный файл ASX имеет следующее.

protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.AddCombresRoute("Combres");
        }

Я также проверил, что значение создается в источнике HTML.

href="/combres.axd/siteCss/309885723"

  src="/combres.axd/siteJs/408582048"

Я не получаю сообщение об ошибке или что-либо, что может помочь мне найти причину, по которой это не будет работать, или то, что я, возможно, пропустил. Любые предложения будут великолепны.

6 ответов

У меня была такая же проблема, когда я пытался заставить ее работать впервые.

Убедитесь, что маршрут Combres добавлен перед вызовом, чтобы игнорировать маршрут {resource}.axd.

Правильный:

RouteTable.Routes.AddCombresRoute("Combres");
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

Неправильно:

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.AddCombresRoute("Combres");

По какой-то причине мы можем исправить отображение css в режиме debug=false, добавив combres.axd к анонимному доступу в web.config.

  <location path="combres.axd">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

Во-первых, я бы предложил подключить log4net к регистратору combres в вашем web.config (не забудьте настроить раздел конфигурации для log4net)

<log4net>
<logger name="Combres">
  <level value="ALL"/>
  <appender-ref ref="LogCombres" />
</logger>

<appender name="LogCombres" type="log4net.Appender.RollingFileAppender">
  <file value="Combres.log.txt"/>
  <appendToFile value="true"/>
  <maximumFileSize value="5000KB"/>
  <maxSizeRollBackups value="2"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p %c - %m%n"/>
  </layout>
</appender>
</log4net>

И в вашем global.asax запустите конфигурацию

log4net.Config.XmlConfigurator.Configure()

У вас должен быть подробный журнал того, что происходит. Если что-то не так, не стесняйтесь, вернитесь с некоторыми выводами журнала

Это случилось и со мной, но проблема была в Yahoo.Yui.Compressor, который изменил одну подпись свойства в новой версии 1.6*.

Так что, чтобы это исправить, я просто опустил Yahoo.Yui.Compressor до версии 1.5.

И я счастлив сейчас:)

Это изменения, которые я сделал в проекте, и он заявил, что работает правильно.

В файле Global.asax добавьте эти строки

using Combres;

В методе application_start

protected void Application_Start()
{
    RouteTable.Routes.AddCombresRoute("Combres");//Add this line
    RegisterRoutes(RouteTable.Routes);
} 

Закомментируйте строку в файле Combres.cs.

Как настроены ваши модули в файле web.config? Проверьте наличие атрибута runAllManagedModulesForAllRequests.

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

В устаревшем приложении WebForms я обнаружил, что у меня нет этого параметра, и как только я его вставил, сработал маршрут combres.axd.

Больше на мой вопрос тоже

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