Совместное использование ELMAH и URLRewritingNet - PullRequest
2 голосов
/ 24 февраля 2010

У меня настроен ELMAH на моем рабочем сервере, и он проделал фантастическую работу, сообщая мне о любых проблемах, а также о любых творческих инъекциях SQL!

Я решил ввести переписывание URl и в итоге выбрал http://www.urlrewriting.net/. Его было приятно и легко настроить, и он делает именно то, что я хочу с сайтом, ориентированным на клиента.

Проблема в ELMAH. Потому что я настроил узел urlrewritingnet в моей конфигурации следующим образом:

<urlrewritingnet
  rewriteOnlyVirtualUrls="true"
  contextItemsPrefix="QueryString"
  defaultPage = "default.aspx"
  defaultProvider="RegEx"
  xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >

... ELMAH любит делать это со своими ссылками axd;

http://www.mydomain.com/elmah.axd/stylesheet/default.aspx

Кто-нибудь знает, как а) остановить переписчик после .axd; или же б) добавить правила для переписчика, чтобы заставить ELMAH работать

Есть идеи? Я рад взломать с httpHandlers ...

Ответы [ 3 ]

4 голосов
/ 20 сентября 2011

У меня была та же проблема - urlrewritingnet испортил мой elmah - но нашел ответ здесь: http://markmail.org/message/ctbh6ozzqpe4qn6j#query:+page:1+mid:ctbh6ozzqpe4qn6j+state:results

В основном установите defaultPage в пустое значение так:

До (сокращено):

<urlrewritingnet defaultPage="default.aspx" ... >

После (сокращено):

<urlrewritingnet defaultPage="" ... >

Теперь все стили CSS работают для Эльмы.

3 голосов
/ 27 марта 2010

Я предложил более простое решение , если другие заинтересованы.

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

0 голосов
/ 04 марта 2010

Я вроде решил это, но не так, как хотел. Для справки других я приведу описание того, что я сделал, и ресурсов;

ELMAH: http://code.google.com/p/elmah/ URLRewritingNet: http://www.urlrewriting.net/149/en/home.html

Это была действительно единственная доступная опция для меня: http://csharpin.blogspot.com/2009/03/using-urlrewritingnet-and-elmah.html,, но у меня были неописуемые трудности, чтобы вставить код в мою существующую архитектуру без других негативных последствий. Я попытался добавить правила в ExternalRewrite.config (URL Rewrite), чтобы игнорировать * .axd, но это тоже не сработало. Я получал все виды странного поведения.

Затем я решил использовать мониторинг работоспособности: http://www.4guysfromrolla.com/articles/031407-1.aspx вместо ELMAH. Извините, ELMAH: (

Мониторинг работоспособности был быстрым шагом в настройке, и тогда все, что мне нужно было сделать, это решить неприятную проблему обратной передачи на переписанных URL;

Мониторинг работоспособности web.config;

<!--he-mon-->
    <healthMonitoring enabled="true">
      <eventMappings>
        <clear />
        <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent" startEventCode="0" endEventCode="2147483647" />
      </eventMappings>
      <providers>
        <clear />
        <add connectionStringName="healthMonitoringConnectionString" maxEventDetailsLength="1073741823" buffer="false" name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider" />
        <add type="System.Web.Management.SimpleMailWebEventProvider" name="EmailWebEventProvider" from="xxx" to="yyy" bodyHeader="zzz" bodyFooter="000" buffer="false" />
      </providers>
      <rules>
        <clear />
        <add name="All Errors Default" eventName="All Errors" provider="SqlWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" />
        <add name="All Errors Default Email" eventName="All Errors" provider="EmailWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" />
      </rules>
    </healthMonitoring>
    <!--he-mon-->

Добавьте строку подключения и к узлу connectionString.

Чтобы исправить довольно неприятный постбэк переписанных строк URL, я попробовал предложение Скотту; Обработка почтовых пакетов ASP.NET с перезаписью URL: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx,, но я не мог заставить это работать вообще.

Начав по-настоящему сожалеть о том, что начал переписывать URL-адреса, я, наконец, добавил это на одну проблемную страницу, которая у меня была; Me.Form.Action = Me.Request.RawUrl в пределах Page_Load и это сработало.

Я знаю, что это не дает прямого ответа на вопрос, но я надеюсь, что это поможет. Я надеюсь, что кто-то найдет мою информацию, по крайней мере, несколько полезной.

...