asp .Net Server传输,回发和会话问题

时间:2012-08-20 09:16:49

标签: asp.net .net postback server.transfer

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

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

第二种方式以下列方式工作:

  1. 将域或子域名与一个产品相关联
  2. 当用户访问该域时,商店必须显示产品页面。该应用不允许用户访问除结帐
  3. 之外的任何其他页面
  4. 用户点击购买按钮,然后该应用将他/她重定向到结帐页面
  5. 首先,我们考虑了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

    我希望我已经解释得很好

    提前致谢!

1 个答案:

答案 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);