Hello!
We are have a small problem with our site. Leaving certain pages idle for longer time and then clicking certain controls,
gives a user the following error:
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '�'.
On the server side, the error is as follows:
System.Web.UI.ViewStateException: Invalid viewstate.
Client IP: 192.168.225.147
Port: 50670
Referer: http://10.176.81.70/List.aspx
Path: /List.aspx
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
I noticed that the error happens after the time that is set under Idle time-out (minutes) under application pool advanced settings.
As far as potential reasons (Response.Write(), response filters, HttpModules, or server trace is enabled), I can say that they are not the problem.
The fact is also that Windows Authentication is used so user "is" logged in as long as the browser is opened.
In Forms Authentication the problem does not occur since user is logged out after certain amount of time...
I'm attaching the code. Can you, please, tell me, what could be the problem.
Regards,
m.
We are have a small problem with our site. Leaving certain pages idle for longer time and then clicking certain controls,
gives a user the following error:
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '�'.
On the server side, the error is as follows:
System.Web.UI.ViewStateException: Invalid viewstate.
Client IP: 192.168.225.147
Port: 50670
Referer: http://10.176.81.70/List.aspx
Path: /List.aspx
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
I noticed that the error happens after the time that is set under Idle time-out (minutes) under application pool advanced settings.
As far as potential reasons (Response.Write(), response filters, HttpModules, or server trace is enabled), I can say that they are not the problem.
The fact is also that Windows Authentication is used so user "is" logged in as long as the browser is opened.
In Forms Authentication the problem does not occur since user is logged out after certain amount of time...
I'm attaching the code. Can you, please, tell me, what could be the problem.
<%@ Page Language="C#" MasterPageFile="~/StorePortal.Master" AutoEventWireup="true" CodeFile="List.aspx.cs" Inherits="StorePortal.List"
Title="<%$ Resources:GRes, Companies %>" %>
<%@ Register Src="~/Controls/SearchBox.ascx" TagName="SearchBox" TagPrefix="MakeIT" %>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"head"
runat
=
"Server"
>
<
meta
content
=
"Desc!"
name
=
"description"
/>
<
meta
content
=
"Keywords"
name
=
"keywords"
/>
<
link
id
=
"RadGridCSS"
rel
=
"stylesheet"
type
=
"text/css"
href="<%= SkinFolder %>/styles/RadControls/Grid.MakeIT.css" />
</
asp:Content
>
<
asp:Content
ID
=
"pageAdd"
ContentPlaceHolderID
=
"pageAdd"
runat
=
"server"
>
<
asp:ScriptManagerProxy
ID
=
"ScriptManagerProxy"
runat
=
"server"
/>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"Companies"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"Companies"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
MakeIT:SearchBox
ID
=
"searchBox"
runat
=
"server"
SearchGridId
=
"Companies"
/>
<
div
id
=
"content"
class
=
"home"
>
<
div
class
=
"wrap"
>
<
telerik:RadGrid
ID
=
"Companies"
runat
=
"server"
AllowSorting
=
"true"
AutoGenerateColumns
=
"false"
OnNeedDataSource
=
"Companies_NeedDataSource"
Skin
=
"MakeIT"
EnableEmbeddedSkins
=
"false"
ImagesPath="<%# this.ImagesPath %>" OnItemCommand="Companies_ItemCommand" OnItemDataBound="Companies_ItemDataBound">
<
MasterTableView
DataKeyNames
=
"CompanyHash"
CommandItemDisplay
=
"Top"
Dir="<%$ Resources:GRes, _DisplayDirection %>">
<
HeaderStyle
Height
=
"40"
/>
<
CommandItemTemplate
>
<
table
class
=
"rgCommandTable"
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"Companies"
runat
=
"server"
Text="<%$ Resources:GRes, Companies %>" CssClass="caption" />
</
td
>
<
td
>
<
div
class
=
"float_right"
>
<
MakeIT:FancyButton
ID
=
"AddButton"
runat
=
"server"
Type
=
"Add"
CommandName
=
"InitInsert"
CausesValidation
=
"false"
Visible="<%# this.UserCanAddCompany %>" />
</
div
>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridHyperLinkColumn
UniqueName
=
"CompanyName"
HeaderText="<%$ Resources:GRes, Name %>" DataNavigateUrlFields="CompanyHash" DataNavigateUrlFormatString="Overview.aspx?CompanyID={0}"
DataTextField="Name" DataTextFormatString="{0}" />
<
telerik:GridBoundColumn
DataField
=
"Address"
HeaderText="<%$ Resources:GRes, Address %>" />
<
telerik:GridBoundColumn
DataField
=
"Telephone"
HeaderText="<%$ Resources:GRes, Telephone %>" />
<
telerik:GridDateTimeColumn
DataField
=
"dateProvisioned"
HeaderText="<%$ Resources:GRes, DateProvisioned %>" />
<
telerik:GridEditCommandColumn
UniqueName
=
"EditColumn"
ButtonType
=
"ImageButton"
HeaderStyle-Width
=
"43px"
/>
<
telerik:GridButtonColumn
CommandName
=
"Delete"
ButtonType
=
"ImageButton"
HeaderStyle-Width
=
"43px"
UniqueName
=
"DeleteColumn"
ConfirmTextFormatString="<%$ Resources:GRes, QuestionDeleteCompany %>"
ConfirmTextFields="Name" />
</
Columns
>
<
NoRecordsTemplate
>
<
asp:Literal
ID
=
"NoRecords"
runat
=
"server"
Text="<%$ Resources:GRes, NoRecords %>" />
</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
br
/>
<
telerik:RadGrid
ID
=
"PendingCompanies"
runat
=
"server"
AllowSorting
=
"true"
AutoGenerateColumns
=
"false"
OnNeedDataSource
=
"PendingCompanies_NeedDataSource"
Skin
=
"MakeIT"
EnableEmbeddedSkins
=
"false"
ImagesPath="<%# this.ImagesPath %>">
<
MasterTableView
DataKeyNames
=
"importId"
CommandItemDisplay
=
"Top"
Dir="<%$ Resources:GRes, _DisplayDirection %>">
<
HeaderStyle
Height
=
"40"
/>
<
CommandItemTemplate
>
<
table
class
=
"rgCommandTable"
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"Companies"
runat
=
"server"
Text
=
"Pending VAR Companies"
CssClass
=
"caption"
/>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridHyperLinkColumn
UniqueName
=
"CompanyName"
HeaderText="<%$ Resources:GRes, Name %>" DataNavigateUrlFields="ImportId" DataNavigateUrlFormatString="NewCompany.aspx?importId={0}&CompanyID=new"
DataTextField="CompanyName" DataTextFormatString="{0}" />
<
telerik:GridTemplateColumn
UniqueName
=
"Address"
HeaderText="<%$ Resources:GRes, Address %>">
<
ItemTemplate
>
<%# Eval("Address1") %>, <%# Eval("Address2") %>, <%# Eval("City") %>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Email"
HeaderText="<%$ Resources:GRes, Email %>" />
<
telerik:GridBoundColumn
DataField
=
"Reseller"
HeaderText
=
"Reseller"
/>
<
telerik:GridBoundColumn
DataField
=
"OrderDate"
HeaderText
=
"Order date"
/>
</
Columns
>
<
NoRecordsTemplate
>
<
asp:Literal
ID
=
"NoRecords"
runat
=
"server"
Text="<%$ Resources:GRes, NoRecords %>" />
</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
</
div
>
</
asp:Content
>
<
asp:Content
ID
=
"addonJS"
ContentPlaceHolderID
=
"addonJS"
runat
=
"server"
>
</
asp:Content
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Data;
using
System.Data.SqlClient;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Xml;
using
UOCommonLib;
using
Telerik.Web.UI;
using
Store.Data;
namespace
CompanyPortal
{
public
partial
class
List : BasePage
{
protected
bool
UserCanAddCompany {
get
{
return
ACL.HasAccessToAny(
"CompanyAdd"
); } }
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!UOPortalLib.UOPortalUiSettings.showElement(
"Global/DisplayVARCompanies"
))
PendingCompanies.Visible =
false
;
}
protected
void
Page_LoadComplete(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
Authorize();
}
public
RadGrid SearchGrid {
get
{
return
Companies; } }
protected
void
Companies_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName ==
"InitInsert"
)
{
if
(UserCanAddCompany) Response.Redirect(
"NewCompany.aspx?CompanyID=new"
);
else
e.Canceled =
true
;
}
else
if
(e.CommandName ==
"Delete"
)
{
string
CompanyHash = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"CompanyHash"
].ToString();
using
(DBAppl dbm =
new
DBAppl())
{
UOContext con =
new
UOContext(dbm.GetSqlConnection());
con.BeginTransaction();
try
{
int
reqId = CompanyRequest.DeleteCompanyRequest(Session[
"UserID"
].ToString(), CompanyHash, con);
// ModuleManager.RequestAction();
con.Commit();
}
catch
(Exception ex)
{
con.Rollback();
logger.Error(
"DeleteCompany"
, ex);
Response.Redirect(
"~/Error.aspx"
,
true
);
}
}
}
else
if
(e.CommandName ==
"Edit"
)
{
string
CompanyHash = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"CompanyHash"
].ToString();
Response.Redirect(
"Company.aspx?CompanyID="
+ CompanyHash);
}
}
protected
void
Companies_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
DataRowView row = (DataRowView)e.Item.DataItem;
int
CompanyID = (
int
)row[
"CompanyID"
];
string
CompanyHash = row[
"CompanyHash"
].ToString();
string
status = row[
"status"
].ToString().Trim();
int
pendingUserChanges = (
int
)row[
"pendingUserChanges"
];
int
pendingCompanyChanges = (
int
)row[
"pendingCompanyChanges"
];
int
userCount = (
int
) row[
"userCount"
];
bool
hasPermissionUserRead = (
int
)row[
"hasPermissionUserRead"
] == 1;
ImageButton editButton = (ImageButton)dataItem[
"EditColumn"
].Controls[0];
ImageButton deleteButton = (ImageButton)dataItem[
"DeleteColumn"
].Controls[0];
if
(status !=
"ACT"
|| pendingCompanyChanges > 0)
{
editButton.Visible =
false
;
deleteButton.Visible =
false
;
}
if
(pendingUserChanges > 0 || userCount > 0)
deleteButton.Visible =
false
;
if
(status !=
"ACT"
|| !hasPermissionUserRead)
{
dataItem[
"CompanyName"
].Controls.RemoveAt(0);
Label companyName =
new
Label();
companyName.Text = row[
"Name"
].ToString();
dataItem[
"Companyname"
].Controls.AddAt(0, companyName);
}
}
}
protected
void
Companies_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
using
(DBAppl dbm =
new
DBAppl())
{
// Gets all companies the user has access to (= UserRead)
SqlCommand command =
new
SqlCommand(
"EXEC fa_getAllUserCompanies @UserID,@Filter"
, dbm.GetSqlConnection());
SqlParameter sqlParam =
new
SqlParameter(
"@UserID"
, SqlDbType.NVarChar);
sqlParam.Value = ACL.currentUser;
command.Parameters.Add(sqlParam);
logger.Debug(
"Filter="
+ searchBox.Text);
command.Parameters.Add(
new
SqlParameter(
"@Filter"
, searchBox.Text));
SqlDataAdapter adapter =
new
SqlDataAdapter(command);
DataTable dt =
new
DataTable();
adapter.Fill(dt);
Companies.DataSource = dt;
}
}
protected
void
PendingCompanies_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
using
(var dbm =
new
DBAppl())
{
SqlCommand command =
new
SqlCommand(@"SELECT ci.*, ri.firstName +
' '
+ ri.lastName AS Reseller, oi.orderDate
FROM [td].[companyImport] ci
JOIN [td].[resellerInfo] ri ON ri.fImportId = ci.importId
JOIN [td].[orderItem] oi ON oi.fImportId = ci.importId
WHERE [status] =
'WAIT'
", dbm.GetSqlConnection());
SqlDataAdapter adapter =
new
SqlDataAdapter(command);
DataTable dt =
new
DataTable();
adapter.Fill(dt);
PendingCompanies.DataSource = dt;
}
}
void
Authorize()
{
if
(!ACL.HasAccess(
"CompanyDelete"
))
Companies.Columns.FindByUniqueName(
"DeleteColumn"
).Visible =
false
;
}
}
}
Regards,
m.