一起使用ELMAH和URLRewritingNet

时间:2010-02-24 17:30:57

标签: c# asp.net vb.net elmah url-rewriting

我在我的生产服务器上安装了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

有没有人知道如何做到 a)在.axd之后停止重写;要么 b)向重写者添加规则以使ELMAH正常工作

有什么想法吗?我很高兴用httpHandlers ...

来破解

3 个答案:

答案 0 :(得分:4)

我有同样的问题 - urlrewritingnet搞砸了我的elmah - 但在这里找到了答案:http://markmail.org/message/ctbh6ozzqpe4qn6j#query:+page:1+mid:ctbh6ozzqpe4qn6j+state:results

基本上将defaultPage设置为空,如下所示:

之前(缩短):

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

之后(缩短):

<urlrewritingnet defaultPage="" ... >

现在所有的CSS样式都适用于Elmah。

答案 1 :(得分:3)

came up with a simpler solution如果其他人感兴趣的话。

我只是直接修改源代码并添加一些基本逻辑来忽略特定的重写规则。

答案 2 :(得分:0)

我解决了这个问题,但不是我想要的方式。为了参考其他人,我将提供我所做的和资源的细分;

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 :(

健康监控是设置的一个小部分,然后我所要做的就是解决重写网址上令人讨厌的回发问题;

Health Monitoring 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重写字符串的相当讨厌的回发,我尝试了ScottGu的建议;使用URL重写处理ASP.NET PostBack: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内的{{1}}并且有效。

我知道这并没有直接回答这个问题,但我希望它有所帮助。我希望有人发现我的信息至少有点用处。