【问题标题】:PRM_ServerError in Azure, runs correctly in EmulatorAzure 中的 PRM_ServerError,在模拟器中正确运行
【发布时间】:2013-05-24 17:17:20
【问题描述】:

我正在尝试做一些非常简单的事情,但遇到了一个我已经尝试了两天来修复的错误。我有一个简单的 ASP 按钮从代码隐藏调用函数(见下文)......我收到以下错误。但只有当我将网站上传到 Azure 时,它​​才能在模拟时正确运行。

SCRIPT5007: Unable to get property 'PRM_ServerError' of undefined or null reference 

MicrosoftAjaxWebForms.js,第 5 行字符 11118

ASP Button 定义如下,没什么特别的...

<asp:Button  CausesValidation="false" ID="Button1" runat="server" Text="Login" OnClick="radbtn_loginButton_Click" /> 

又是后面的代码...疯狂的简单...

protected void radbtn_loginButton_Click(object sender, EventArgs args)
{
    try
    {
        string uName;
        string uPass;
        uName=UsernameBox.Value;
        uPass=PasswordBox.Value;
        if(uName=="admin" && uPass=="password")
        {
            Response.Redirect("dsxHome.aspx");
        }
        else
        {
            loginMessage.Text="Login Invalid!"; 
        }//end if

    }
    catch
    {
        loginMessage.Text="Problem with Login"; 
    }
 }

消息标签嵌套在 AjaxPanel 中...我正在站点的其他页面的其他地方进行其他 Ajax 调用...但最简单的一个正在中断...

任何想法...我知道我错过了一些愚蠢的东西...

迈克尔

【问题讨论】:

    标签: c# asp.net ajax azure


    【解决方案1】:

    对于那些感兴趣的人,当调用某些服务器端代码时,在更新面板内的 ajax 调用期间会发生错误,但 iis 应用程序池已被回收(在部署后发生)。

    可以通过将 AsyncPostBackError 事件处理程序添加到 ScriptManager 在代码中处理错误。

    然后,您可以在发生此错误时将用户重定向到某个地方,或者显示一条弹出消息,说明他们的会话已过期并且现在已刷新或适合您的应用程序。

    更多信息在这里:https://msdn.microsoft.com/en-us/library/bb398934.aspx

    希望这可以帮助某人:)

    【讨论】:

      【解决方案2】:

      我的两分钱,因为我也花了几天时间试图解决这个问题。就我而言,这是由于将 CustomErrors 设置为“On”或“RemoteOnly”而发生的。 AFAIK 服务器上发生错误,客户端试图显示错误,但运行到此 PRM_ServerError 。所以基本上这个问题隐藏了一个潜在的错误。 要查看潜在错误,您只需设置 CustomErrors to "Off"

      附带说明,在 Chrome 上我得到的错误是:

      未捕获的类型错误:无法读取未定义的属性“PRM_ServerError”

      【讨论】:

        【解决方案3】:

        要解决此问题,请创建或转到 global.asax 文件并添加

            void Application_Error(object sender, EventArgs e)
            {
                //direct user to error page 
                Server.Transfer("~/ErrorPages/Oops.aspx");
            }
        

        Server.Transfer("~/ErrorPages/Oops.aspx"); 处添加断点并检查Server.GetLastError() 的结果。它返回一个框架异常。注意内部异常,它会告诉你那里出了什么问题。

        【讨论】:

          【解决方案4】:

          我在这里插话 - 希望这对某人有所帮助。首先是上下文,我们在 VS 而不是 Azure 或 Emulator 中收到此错误。以下是我们如何解决同样的错误。奇怪的是,在我们的情况下,我们使用 sessionState mode="SQLServer" 所以我们添加了:

          [Serializable]
          public class MySessionClass
          {
          }
          

          如果你想了解更多:https://msdn.microsoft.com/en-us/library/ms973893.aspx

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多