我是IntraWeb的新手并遇到问题。 为了实现登录表单,我在Usersession中存储了数据集。 但是当涉及访问数据集时,我收到了访问冲突错误。 我想通了,没有创建Useresession。现在我有点困惑,因为据说在Intraweb纪录片中,Usersession是由ServerController自动创建的。
我像这样访问(分别想要)数据集
UserSession.Dataset.open;
我使用Rad Studio XE5中包含的IntraWeb试用版。那可能是问题吗? 如果这不是问题,我该如何手动创建Usersession?
非常感谢
[编辑13.4.16]
问题是我使用的评估版。安装完整版后,我的问题消失了。他们通过添加另一个参数来更改其Usersession.create过程。因此,如果您遇到相同的问题,请确保使用实际版本: 感谢所有回复
答案 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并查看行为是否发生变化。
丹