【问题标题】:Sys.WebForms.PageRequestManagerServerErrorException On post backSys.WebForms.PageRequestManagerServerErrorException 回发
【发布时间】: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


【解决方案1】:

我在更新面板和服务器传输方面遇到了类似的问题。似乎更新面板和 Response.Write 相互矛盾。尝试使用带有asp:PostBackTrigger 触发器的条件更新。

我希望这会有所帮助。

谢谢,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多