过去4年来,我们一直在开发一个商店网络应用程序。现在,我们正在添加一项新功能,因此应用程序将根据配置以两种不同的方式运行:
第一种方式只是一个普通的网络应用
第二种方式以下列方式工作:
首先,我们考虑了Server.Transfer
,所以我们在Global.asax中写道
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (check for conditions)
{
Server.Transfer("product.aspx", true);
}
}
这种方法的第一个问题是Session。当product.aspx加载时,它没有初始化的Session,所以它失败了。
然后我们将代码放在Application_PreRequestHandlerExecute
中,但是我们遇到了回发问题。我们已经知道Server.Transfer
有问题,但第二个参数是true
,它应该被解决了。我们还设置了EnableViewStateMac="False"
,因为有一个重定向到结帐aspx,但这也不起作用。无论我们做什么,该应用程序都无法验证ViewState,或者它不响应回发。
我们尝试的另一个解决方案是尝试以编程方式更改默认页面,但这似乎不可能。如果我们手动更改web.config中的默认页面,该应用程序工作正常,但遗憾的是这是不允许的。
所以问题是:
我们应该使用Server.Transfer(假设可以这样做)吗?可以通过某种方式更改默认页面,外部配置文件还是以编程方式更改?也许我们的方法错了,而且有更好的方法,尽管我们无法想象它
哦!我差点忘了:我们使用的是aspx .net framework 2.0和C#.net 3.5
我希望我已经解释得很好
提前致谢!
答案 0 :(得分:0)
您可以在MSDN帮助页http://support.microsoft.com/kb/316920中找到以下用途我认为您必须按照您的建议进行操作并设置EnableViewStateMac="False"
此外您还需要传递真实参数或发送false (这是默认设置)当你拨打Server.Transfer
时,请执行以下操作:
Server.Transfer("product.aspx", true);
对此:
Server.Transfer("product.aspx");
或者这个:
Server.Transfer("product.aspx", false);