在Intraweb中访问UserSession时访问冲突

时间:2016-04-08 08:15:58

标签: delphi access-violation delphi-xe5 intraweb

我是IntraWeb的新手并遇到问题。 为了实现登录表单,我在Usersession中存储了数据集。 但是当涉及访问数据集时,我收到了访问冲突错误。 我想通了,没有创建Useresession。现在我有点困惑,因为据说在Intraweb纪录片中,Usersession是由ServerController自动创建的。

我像这样访问(分别想要)数据集  UserSession.Dataset.open;

我使用Rad Studio XE5中包含的IntraWeb试用版。那可能是问题吗? 如果这不是问题,我该如何手动创建Usersession?

非常感谢

[编辑13.4.16]

问题是我使用的评估版。安装完整版后,我的问题消失了。他们通过添加另一个参数来更改其Usersession.create过程。因此,如果您遇到相同的问题,请确保使用实际版本: 感谢所有回复

3 个答案:

答案 0 :(得分:0)

您需要在会话

中创建“数据”
wdLineSpaceMultiple

请注意,在此示例中

  

TUserSession

是用户定义的类

procedure TIWServerController.IWServerControllerBaseNewSession(
  ASession: TIWApplication; var VMainForm: TIWAppForm);
begin
  ASession.Data := TUserSession.Create;
end;

看看本教程,它解释了如何在IW中完成会话管理 - http://etutorials.org/Programming/mastering+delphi+7/Part+IV+Delphi+the+Internet+and+a+.NET+Preview/Chapter+21+Web+Programming+with+IntraWeb/Building+IntraWeb+Applications/

或咨询由atozed提供的technical documentation

答案 1 :(得分:0)

我尝试添加一条评论,显然我需要更多积分。 如果你进入RBA给出的回答,会找到答案,但这是简短形式:

IW会自动创建和管理用户会话。但是,TIWUserSession只是您的一部分。为了在会话中拥有自己的数据,。创建TIWUserSession并将其添加为会话的.Data。在IWServerControllerBaseNewSession中执行以下操作:

  ASession.Data := TIWUserSession.Create(nil, ASession);

请注意,该过程的ASession参数是由IW管理的会话。

要访问TIWUserSession,请在ServerController中创建一个过程:

function UserSession: TIWUserSession;
begin
    Result := TIWUserSession(WebApplication.Data);
end;

在接口部分公开该程序。

答案 2 :(得分:0)

在我看来,我们可能会解决错误的问题"。

您表示在实施登录表单时发生了这种情况。您还指出WServerControllerBaseNewSession()中设置的中断没有命中。

在ServerController中,你有" AuthBeforeNewSession"设为True?如果是这样,请将其设置为False并查看行为是否发生变化。