簡體   English   中英

SSJS Platform.Response.Redirect 在 Try Catch 語句中引發錯誤

[英]SSJS Platform.Response.Redirect throws error in Try Catch Statement

我懷疑 .NET 的 threadabortexception 問題,但我無法使用可能的選項修復它。

簡而言之,Redirect 函數拋出錯誤並進入 catch,無論設置第二個參數為 true 還是 false)。

下面的代碼只是一個例子(但我之前在實時項目中遇到過幾次)。

...

       try {

            var TSD = TriggeredSend.Init("DE_Name");
            var Status = TSD.Send(data.subscriber, data.attributes);

            if (Status != "OK") {
                Platform.Response.Redirect(Variable.GetValue("@error_page"));
            } else {
                Platform.Response.Redirect(Variable.GetValue("@thanks_page"));  //<<<-- This redirect throw error
            }
        } catch (err) {
            Platform.Response.Redirect(Variable.GetValue("@error_page")); // <---- here it comes
        }
...

資源可能有幫助:1# https://support.microsoft.com/en-us/help/312629/prb-threadabortexception-occurs-if-you-use-response-end-response-redir

2# https://developer.salesforce.com/docs/atlas.en-us.mc-programmatic-content.meta/mc-programmatic-content/ssjs_platformClientBrowserRedirect.htm?search_text=Redirect

歡迎任何解決方法。

我知道這是一個較舊的問題,但我認為分享調查結果會很好。

我沒有合乎邏輯的解釋為什么會發生這種情況,但重定向總是拋出錯誤,如果在 try 塊中使用它,則將執行 catch 部分。

這是一個簡單的解決方法:

...

   try {

        var TSD = TriggeredSend.Init("DE_Name");
        var Status = TSD.Send(data.subscriber, data.attributes);

        try { 
            if (Status != "OK") {
                Platform.Response.Redirect(Variable.GetValue("@error_page"));
            } else {
                Platform.Response.Redirect(Variable.GetValue("@thanks_page"));  //<<<-- This redirect throw error
            }
        } catch(e) {}

    } catch (err) {
        Platform.Response.Redirect(Variable.GetValue("@error_page")); // <---- here it comes
    }
...

暫無
暫無

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

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