0

在过去的 4 年里,我们一直在开发商店网络应用程序。现在,我们正在添加一项新功能,因此该应用程序将根据配置以两种不同的方式运行:

第一种方式只是一个普通的网络应用程序

第二种方式的工作方式如下:

  1. 将域或子域与一个产品相关联
  2. 当用户访问该域时,商店必须显示产品页面。该应用程序不允许用户访问除结帐页面之外的任何其他页面
  3. 用户点击购买按钮,然后应用程序将他/她重定向到结帐页面

起初,我们想到了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

我希望我已经解释清楚了

提前致谢!

4

1 回答 1

0

您可能会从 MSDN 帮助页面http://support.microsoft.com/kb/316920中找到以下有用的EnableViewStateMac="False"信息(这是默认设置)当您调用时Server.Transfer,请从此开始:

Server.Transfer("product.aspx", true);

对此:

Server.Transfer("product.aspx");

或这个:

Server.Transfer("product.aspx", false);
于 2012-08-20T09:23:41.697 回答