正在获取“线程正在中止”。在登录过程中

时间:2019-09-04 18:41:35

标签: c# asp.net

我正在处理一个奇怪的问题。我们的代码具有一个登录过程,如果登录成功,则将强制将用户重定向到主页。

该逻辑可以在本地,测试服务器,开发服务器和生产环境中正常运行。但是,仅在一种环境中该过程不起作用。它引发以下异常

  

线程被中止。在   System.Threading.Thread.AbortInternal()在   System.Threading.Thread.Abort(Object stateInfo)在   System.Web.HttpResponse.AbortCurrentThread()在   System.Web.HttpResponse.End()在   System.Web.HttpResponse.Redirect(String url,Boolean endResponse,   Boolean永久性),位于System.Web.HttpResponse.Redirect(字符串url)   在DRMS.login.Page_Load(Object sender,EventArgs e)中   login.aspx.cs:第116行

在第116行仅指向一个括号,这是非常奇怪的。有人可以帮我提供代码吗?谢谢大家

下面,我粘贴了包括所有行的整个方法

24        protected void Page_Load(object sender, EventArgs e)
25        {
26
27            try
28            {
29
30                //DateTime warningDateTime = new DateTime();
31                DataSet dset = null;
32                drmsda = new DRMS_Transaction.drms_dataaccess();
33
34                //Changing Web.Config variables to DB Variables
35                dset = drmsda.GetConfigVariables("Warning_Message");
36                if (dset.Tables["ConfigVariables"] != null)
37                {
38                    if (dset.Tables["ConfigVariables"].Rows.Count > 0)
39                    {
40                        if (dset.Tables["ConfigVariables"].Rows[0]["a_expiry"].ToString() != "")
41                        {
42                            if (Convert.ToDateTime(dset.Tables["ConfigVariables"].Rows[0]["a_expiry"]) >= Convert.ToDateTime(drmsda.GetServerDateTime()))
43                            {
44                                lblWarningMessage.Visible = true;
45                                lblWarningMessage.Text = dset.Tables["ConfigVariables"].Rows[0]["a_value"].ToString();
46                            }
47
48                        }
49                    }
50                }
51
52                if (!IsPostBack)
53                {
54                    if (ConfigurationManager.AppSettings["InTestingMode"].ToUpper() == "YES")
55                    {
56                        txtUsername.Text = "test@gmail.com";
57                        chkAgreement.Checked = true;
58                    }
59
60                    //Changing Web.Config variables to Announcement
61                    dset = drmsda.GetConfigVariables("Announcement");
62                    if (dset.Tables["ConfigVariables"] != null)
63                    {
64                        if (dset.Tables["ConfigVariables"].Rows.Count > 0)
65                        {
66                            if (dset.Tables["ConfigVariables"].Rows[0]["a_expiry"].ToString() != "")
67                            {
68                                if (Convert.ToDateTime(dset.Tables["ConfigVariables"].Rows[0]["a_expiry"]) >= Convert.ToDateTime(drmsda.GetServerDateTime()))
69                                {
70                                    lnkAnnouncement.Visible = true;
71                                    lnkAnnouncement.Text = dset.Tables["ConfigVariables"].Rows[0]["a_value"].ToString();
72                                    lnkAnnouncement.NavigateUrl = dset.Tables["ConfigVariables"].Rows[0]["a_url"].ToString();
73                                }
74
75                            }
76                        }
77                    }
78
79                    //Changing Web.Config variables to variables in database             
80                    dset = drmsda.GetConfigVariables("OutageMessage");
81                    if (dset.Tables["ConfigVariables"] != null)
82                    {
83                        if (dset.Tables["ConfigVariables"].Rows.Count > 0)
84                        {
85                            if (dset.Tables["ConfigVariables"].Rows[0]["a_expiry"].ToString() != "")
86                            {
87                                if (Convert.ToDateTime(dset.Tables["ConfigVariables"].Rows[0]["a_expiry"]) >= Convert.ToDateTime(drmsda.GetServerDateTime()))
88                                {
89                                    lblOutage.Visible = true;
90
91                                    lblOutage.Text = dset.Tables["ConfigVariables"].Rows[0]["a_value"].ToString();
92                                }
93
94                            }
95                        }
96                    }
97                    //if (ConfigurationManager.AppSettings["TurnOnOutageMessage"].ToUpper() == "YES")
98                    //{
99                    //    lblOutage.Visible = true;
100                    //    lblLineBreak.Visible = true;
101
102                    //    lblOutage.Text = ConfigurationManager.AppSettings["OutageMessage"] + "  ";
103                    //}
104
105                    string refererURL = string.Empty;
106                    if (Page.Request.QueryString["ReturnURL"] != null)
107                    {
108                        refererURL = Page.Request.QueryString["ReturnURL"].ToString();
109                    }
110                    //Check to see if user was redirected because of Timeout or initial login 
111                    //Where "Default.aspx" is the default page for your application 
112                    if (refererURL != "" && refererURL != (ResolveUrl("~") + "login.aspx"))
113                    {
114                        //Show HTML etc showing session timeout message  
115                        if (refererURL == "/")
116                        {
117                            Response.Redirect("~/login.aspx", false);
118                            Context.ApplicationInstance.CompleteRequest();
119                        }
120                        else if (refererURL.Length >= 26)
121                        {
122                            if (refererURL.Substring(0, 26).ToLower() == "/public/searchresults.aspx")
123                            {
124                                Response.Redirect("~/login.aspx", false);
125                                Context.ApplicationInstance.CompleteRequest();
126                            }
127                        }
128                        else
129                        {
130                            drmsda.InsertErrorlog("External: login.aspx.cs", "Page Load", refererURL, refererURL, "");
131                            lblMessage.Text = "Session Timeout. Please login again.";
132                            lblMessage.Visible = true;
133                        }
134                    }
135                    //else
136                    //// User redirected here to to initial login 
137                    //{
138                    //    lblMessage.Text = "Please login";
139                    //    lblMessage.Visible = true;
140
141                    //    //Show HTML showing initial login HTML message etc 
142                    //}
143
144#if (SkipVirusCheck)
145                Label2.Text = "ACCESS Application is running in Pilot Mode.<br><br>";
146                //Label2.Text = "ACCESS Application is running in Debug Mode.<br><br>";
147                //btnLogin.Text = "Debug Mode";
148                //btnLogin.BackColor = Color.Red;
149#endif
150
151                    if (ConfigurationManager.AppSettings["IsSiteDown"].ToUpper() == "YES")
152                    {
153                        Response.Redirect("~/Message.aspx", false);
154                        Context.ApplicationInstance.CompleteRequest();
155                    }
156                    else
157                    {
158
159                        //Changing Web.Config variables to variables in database             
160                        dset = drmsda.GetConfigVariables("View_Notice_Label_1");
161                        if (dset.Tables["ConfigVariables"] != null)
162                        {
163                            if (dset.Tables["ConfigVariables"].Rows.Count > 0)
164                            {
165                                HyperLink7.Text = dset.Tables["ConfigVariables"].Rows[0]["a_value"].ToString();
166                                HyperLink7.NavigateUrl = dset.Tables["ConfigVariables"].Rows[0]["a_url"].ToString();
167                                HyperLinkMessage.Text = dset.Tables["ConfigVariables"].Rows[0]["a_value"].ToString();
168                                HyperLinkMessage.NavigateUrl = dset.Tables["ConfigVariables"].Rows[0]["a_url"].ToString();
169                            }
170                        }
171                    }
172                }
173            }
174            catch (Exception e3)
175            {
176                drmsda.InsertErrorlog("External: login.aspx.cs", "Page Load", e3.Source, e3.Message + " " + e3.StackTrace, "");
177            }             
178        }

2 个答案:

答案 0 :(得分:0)

有一个很好的答案可以解释此When Should I Use Response.Redirect(url, true)?,但总之:

Credits: https://stackoverflow.com/users/993672/shivprasad-koirala

应用于您的代码..您需要更改:

Response.Redirect("~/login.aspx");

Response.Redirect

更新

我会尝试将所有Response.Redirect()更改为使用HttpServerUtility.Execute。我认为您的问题是由连续结束多次响应引起的。 Server.Transfer()Response.End()方法都在内部调用using System.Web; Server.Execute("~/login.aspx"); // Default Server.Execute("~/login.aspx", false); // Overload Execute(string path, bool preserveForm);

{
  "command": "subscribe",
  "identifier": "{\"channel\": \"UserChannel\"}",
  "data": "{\"key\": \"value\"}"
}

答案 1 :(得分:0)

我们的团队能够找到解决方案

错误本身是非常具有欺骗性且无关紧要的。问题在于IIS的“身份验证”设置中

转到我们的网站,选择功能视图->身份验证->表单身份验证

确保未选中“要求SSL”

enter image description here