【问题标题】:Using ELMAH and URLRewritingNet Together一起使用 ELMAH 和 URLRewritingNet
【发布时间】:2011-01-20 15:31:49
【问题描述】:

我在我的生产服务器上设置了 ELMAH,它让我知道任何小问题 - 以及任何创造性的 SQL 注入,它做得非常出色!

我决定引入 URl Rewriting 并最终选择了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...

【问题讨论】:

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


    【解决方案1】:

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

    基本上这样设置 defaultPage 为空:

    之前(缩短):

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

    之后(缩短):

    <urlrewritingnet defaultPage="" ... >
    

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

    【讨论】:

      【解决方案2】:

      如果其他人有兴趣,我came up with a simpler solution

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

      【讨论】:

      • 我无法对此进行测试,但实际上看起来还不错。我很佩服。如果我有空闲时间,我可能会将其加载回 UrlRewritingNet 和 ELMAH 项目......谢谢。 +1
      • 我的站点现在通过 .NET 引导每个请求,因此当人们访问 intrepidstudios.com/tutorials/web%201001 URLRewriterNet 时会拦截它并提供“default.aspx”而不是 index.html。我在我的配置中添加了一条规则,瞧,它有效!
      【解决方案3】:

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

      埃尔玛: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 重写)添加规则以忽略 *.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 重写字符串上相当讨厌的回发问题,我尝试了 ScottGu 的建议;使用 URL 重写处理 ASP.NET 回发:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx,但我根本无法让它工作。

      开始真的后悔进入 URL 重写,我终于将它添加到我有一个有问题的页面; Me.Form.Action = Me.Request.RawUrlPage_Load 中,它很有效。

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

      【讨论】:

      • 如果您希望恢复到 UrlRewritingNet,我在下面为您提供了解决方案。
      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 2010-12-17
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多