Маршрут 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.