我正在处理一个奇怪的问题。我们的代码具有一个登录过程,如果登录成功,则将强制将用户重定向到主页。
该逻辑可以在本地,测试服务器,开发服务器和生产环境中正常运行。但是,仅在一种环境中该过程不起作用。它引发以下异常
线程被中止。在 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 }
答案 0 :(得分:0)
有一个很好的答案可以解释此When Should I Use Response.Redirect(url, true)?,但总之:
应用于您的代码..您需要更改:
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)