在过去的 4 年里,我们一直在开发商店网络应用程序。现在,我们正在添加一项新功能,因此该应用程序将根据配置以两种不同的方式运行:
第一种方式只是一个普通的网络应用程序
第二种方式的工作方式如下:
- 将域或子域与一个产品相关联
- 当用户访问该域时,商店必须显示产品页面。该应用程序不允许用户访问除结帐页面之外的任何其他页面
- 用户点击购买按钮,然后应用程序将他/她重定向到结帐页面
起初,我们想到了Server.Transfer
,所以我们写在 Global.asax
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (check for conditions)
{
Server.Transfer("product.aspx", true);
}
}
这种方法的第一个问题是会议。当 product.aspx 加载时,它没有初始化会话,所以它失败了。
然后我们把那个代码放进去,Application_PreRequestHandlerExecute
但是,我们遇到了回发问题。我们已经知道这Server.Transfer
有问题,但是第二个参数是true
,它应该被解决。我们还设置EnableViewStateMac="False"
了,因为有一个重定向到结帐 aspx,但这也不起作用。无论我们做什么,应用程序都无法验证 ViewState 或者它不响应回发。
我们尝试的另一个解决方案是尝试以编程方式更改默认页面,但这似乎是不可能的。如果我们手动更改 web.config 中的默认页面,应用程序可以正常工作,但遗憾的是这是不允许的。
所以问题是:
我们应该使用 Server.Transfer 吗(假设可以做到)?可以以某种方式、外部配置文件或以编程方式更改默认页面吗?也许我们的方法是错误的,还有更好的方法,尽管我们无法想象它
哦!我差点忘了:我们使用的是 aspx .net framework 2.0 和 C# .net 3.5
我希望我已经解释清楚了
提前致谢!