簡體   English   中英

ELMAH:您可以將其設置為僅遠程發送電子郵件錯誤嗎?

[英]ELMAH: Can you set it up to email errors only remotely?

在本地調試解決方案時,我不希望收到ELMAH錯誤電子郵件。 當應用程序托管在遠程計算機上時,我只想接收它們。 這可能嗎?

我遇到了同樣的問題,並且拒絕為本地和遠程使用不同的web.configs的想法,因為這在源代碼管理中不能很好地發揮作用(但請參見下面的評論)。

相反,我將其添加到使用Elmah的每個站點的Global.asax文件中:

void ErrorMail_Mailing(object sender, ErrorMailEventArgs e)
{
    e.OnErrorMailing(); // Prevent local machine errors from being mailed to the rest of the team
}

OnErrorMailing()是在我們的網絡庫中聲明的擴展方法,如下所示:

    /// <summary>
    /// Prevent local machine errors from being mailed to the rest of the team. Feel free to add your own machine names/case blocks here
    /// </summary>
    public static void OnErrorMailing(this ErrorMailEventArgs e)
    {
        switch (e.Error.HostName.ToLower())
        {
            case "mymachinename":
                e.Mail.To.Clear();
                e.Mail.To.Add("MYEMAILADDRESS");
                break;
        }
    }

當然,如果您只有一個使用Elmah的站點,或者您不介意代碼重復,也可以將該代碼直接放入global.asax。

毫無疑問,我有更多優雅的解決方案,但這對我有用。 只有我從本地計算機收到例外,生產例外會轉到在web.config中配置的電子郵件地址。

我找到了一種在VS 2010中使用配置轉換的解決方案。我從基本web.config中刪除了<errorMail />標記,然后使用轉換標記將其添加到了Web.Qa.Config和Web.Release.Config中。 當我發布時,它允許遠程計算機在本地禁止發送電子郵件的同時發送電子郵件。

我很確定您可以做到這一點。 只需過濾傳出的錯誤電子郵件 當然,請使用一些設置來表明它是遠程托管的。 或者只是擁有兩個不同的web.configs並確保已關閉“開發人員一個”。

通過修改web.config文件,可以使電子郵件轉到本地計算機上的提取文件夾而不是SMTP服務器。

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\" />
        </smtp>
    </mailSettings>
</system.net>

或者,您可以將其放在開發框中的Machine.config設置中,這樣就不必一直觸摸web.config文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM