0

在执行 UniSubroutine 的 Call() 时,我在以下代码行上关注 UniSubroutineException。

try
        {
            if ((txtEmail.Text != "") && (txtPass.Text != ""))
            {
                if (txtPass.Text == txtPass2.Text)
                {

                    Connection CONN = new Connection();
                    UniSession us = UniObjects.OpenSession(CONN.IP(), CONN.UNAME(), CONN.PASS(), CONN.ACCT());
                    UniFile PRACTICES = us.CreateUniFile("PRACTICES");
                    UniFile BCPARAMS = us.CreateUniFile("BC.PARAMS");
                    string OPRICE = BCPARAMS.ReadField("OPTIONS", 2).ToString();
                    if (OPRICE == "")
                    {
                        OPRICE = "19900";
                    }
                    UniSubroutine CHECKNEWEMAIL = us.CreateUniSubroutine("CHECK.NEW.EMAIL", 2);
                    CHECKNEWEMAIL.SetArg(0, txtEmail.Text);
                    CHECKNEWEMAIL.Call();
                    string ERSP = CHECKNEWEMAIL.GetArg(1).ToString();
                    if (ERSP == "")
                    {

                        UniDynArray IN = new UniDynArray(us);
                        IN.Replace(2, txtBName.Text);
                        IN.Replace(3, txtBAddr.Text);
                        IN.Replace(4, txtCity.Text);
                        if (ddCountry.SelectedValue == "US")
                        {
                            IN.Replace(6, txtZip.Text);
                        }
                        if (ddCountry.SelectedValue == "AU")
                        {
                            IN.Replace(5, txtState.Text);
                        }
                        IN.Replace(8, txtName.Text);
                        IN.Replace(9, txtEmail.Text.Replace(" ", ""));
                        IN.Replace(10, txtPass.Text);
                        IN.Replace(11, txtEmail.Text);
                        IN.Replace(12, "");
                        IN.Replace(20, "M");
                        IN.Replace(70, "NOT VERIFIED");
                        IN.Replace(86, "");
                        try
                        {
                            IN.Replace(25, ddHear.SelectedValue);
                        }
                        catch
                        {
                            IN.Replace(25, "");
                        }
                        IN.Replace(53, us.Iconv(DateTime.Now.AddDays(30).ToShortDateString(), "D2/"));
                        IN.Replace(54, OPRICE);
                        if (txtGroupNum.Text != "")
                        {
                            UniSubroutine GIDTOPID = us.CreateUniSubroutine("GID.TO.PID", 3);
                            GIDTOPID.SetArg(0, txtGroupNum.Text);
                            GIDTOPID.Call();
                            string PID = GIDTOPID.GetArg(1).ToString();
                            string PRICE = GIDTOPID.GetArg(2).ToString();
                            IN.Replace(86, PID);
                            IN.Replace(54, PRICE);
                        }
                        IN.Replace(90, ViewState["AFID"].ToString());
                        IN.Replace(115, ddCountry.SelectedValue);
                        IN.Replace(120, ViewState["CURR"].ToString());
                        string MVIN = IN.ToString();

                        UniSubroutine NEWUSER = us.CreateUniSubroutine("NEW.USER.V2", 3);
                        NEWUSER.SetArg(0, MVIN);
                        NEWUSER.Call();

                        string UID = NEWUSER.GetArg(1).ToString();

                        string SEC = Security.CreateSecurity(DateTime.Now.AddHours(8), UID);
                        Response.Redirect("Verify.aspx?SEC=" + SEC);
                    }
                    else
                    {
                        UniObjects.CloseSession(us);
                        lblMSGBox.Text = "Invalid Email Address";
                        RadNotification1.Show();
                    }
                }
                else
                {
                    lblMSGBox.Text = "Passwords do not match";
                    RadNotification1.Show();
                }
            }
            else
            {
                lblMSGBox.Text = "Email and Password are required";
                RadNotification1.Show();
            }
        }
        catch (Exception ex)
        {
        }
    }

错误:在 UODOTNET.dll 中出现“IBMU2.UODOTNET.UniSubroutineException”类型的异常,但未在用户代码中处理

附加信息:[Rocket U2][UODOTNET - UNICLIENT][ErrorCode=30107] 子程序未能成功完成

请建议我如何解决此问题。

4

1 回答 1

0

提供的附加信息是线索

[Rocket U2][UODOTNET - UNICLIENT][ErrorCode=30107] 子程序未能成功完成

这表明您调用的子例程未能返回:子例程遇到 STOP,或者它的执行被中止。
最终结果是 UniRPC 连接没有得到对子程序调用的优雅响应并抛出错误供您调查。

于 2019-05-16T06:30:23.900 回答