【发布时间】:2012-02-05 19:10:30
【问题描述】:
我正在使用 asp.net 4.0(网络表单),每当页面回发以验证凭据时,我都会在登录页面上遇到错误,它会显示以下错误。
Sys.WebForms.PageRequestManagerServerErrorException:未知错误 在服务器上处理任务时发生。状态码 从服务器返回的是:404。
我想告诉大家完整的场景。因为我在我的处理程序中使用 server.transer 并使用输入以下 url 来访问登录页面。
这是我使用母版页的 .aspx 内容页面。
<asp:TextBox ID="txtEmail" runat="server" Width="200px" AutoCompleteType="None"></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" Width="200px" AutoCompleteType="None"></asp:TextBox>
<asp:Button ID="cmdLogin" runat="server" Text="Login" OnClick="cmdLogin_Click" />
</ContentTemplate>
</asp:UpdatePanel>
这是我的处理程序ProcessRequst 方法
public void ProcessRequest(HttpContext context)
{
string stringRqourl = context.Request.RawUrl;
tbl_contactcompanies tblCustomer = null;
try
{
int lastIndex = stringRqourl.ToLower().LastIndexOf("/");
int lenStart = lastIndex - 1;
int wordLengeth = stringRqourl.Length - lenStart;
string customerCodeName = stringRqourl.Substring(1, stringRqourl.Length - wordLengeth);
tblCustomer = CustomerManager.GetCustomerByWebCode(customerCodeName);
}
catch (Exception)
{
tblCustomer = null;
}
if (tblCustomer == null)
Redirect404Page(context);
else
{
Dictionary<string, string> paramsdic = new Dictionary<string, string>();
paramsdic.Add(ParameterName.CUSTOMER_ID, tblCustomer.ContactCompanyID.ToString());
paramsdic.Add(ParameterName.IS_ALLOW_WEB_ACCESS, tblCustomer.IsAllowWebAccess.ToString());
//Note it is server.transer which creates the following :
// "CorpLogin.aspx?IsAllowWebAcces=1&&CustomerID=123"
HttpContext.Current.Server.Transfer(Utils.BuilQueryString("CorpLogin.aspx", paramsdic));
}
}
这是我遵循的步骤:
第 1 步: 在 url 我输入 http://localhost/coprprate123/login 并且客户处理程序监听这样的请求并解析 id 例如在我的情况下它是 123。和 sever.transfer 将请求传输到 CorpLogin.aspx 并且 url 保持不变(我想要实现)
第 2 步:
提供一些无效凭据,点击登录按钮返回页面,出现以下js错误。
Sys.WebForms.PageRequestManagerServerErrorException:未知错误 在服务器上处理任务时发生。状态码 从服务器返回的是:404。
每当我删除更新面板时,回发时都不会发生这种情况。我坚持下去并在互联网上搜索了很多。如果有人可以调查这个问题,请注意
问候, 萨尔曼。
【问题讨论】:
-
您能否检查第 2 步:客户是否为空?在这种情况下,您正在执行 Redirect404Page(context)
-
亲爱的,我已经检查过了,处理程序没有任何问题,它成功地将我的请求转移到 corpLogin.aspx 页面。问题在该页面内开始,一旦它得到回发。请注意,我使用的是 server.transfer 而不是 Response.Redirect。
标签: javascript asp.net