我在我的生产服务器上安装了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
...
答案 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}}并且有效。
我知道这并没有直接回答这个问题,但我希望它有所帮助。我希望有人发现我的信息至少有点用处。