访问Intraweb中的UserSession时发生访问冲突



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

我访问(分别希望)数据集如下UserSession.Dataset.open;

我使用Rad Studio XE5中包含的IntraWeb试用版。这可能是问题所在吗?如果这不是问题所在,我如何手动创建用户会话?

非常感谢

[编辑13.4.16]

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

您需要在会话中创建"数据"

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

注意在这个例子中

TUserSession

是用户定义的类

type
  TUserSession = class
  public
    UserCount: Integer;
  end;

看看这个教程,它解释了如何在IW-http://etutorials.org/Programming/mastering+delphi+7/Part+IV+delphi+Internet+和+a+.NET+预览/Chapter+21+Web+编程+with+IntraWeb/Building+IntraWeb+应用程序/

或查阅atozed提供的技术文档。

我试着只添加了一个注释,显然我需要更多的分数。如果你进入澳大利亚储备银行给出的回复,就会找到答案,但这里是缩写:

IW会自动创建和管理用户会话。然而,TIWUserSession只是你的一部分。为了在会话中拥有自己的数据,请创建TIWUserSession并将其添加为会话的.data。在IWServerControllerBaseNewSession中,使用执行此操作

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

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

为了访问您的TIWUserSession,请在ServerController:中创建一个过程

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

在接口部分公开该过程。

Dan

我突然想到我们可能在"解决错误的问题"。

您指出这是在实现登录表单时发生的。您还指出WServerControllerBaseNewSession()中的中断集没有命中。

在ServerController中,是否将"AuthBeforeNewSession"设置为True?如果是,请将其设置为False,并查看行为是否发生更改。

Dan

相关内容

  • 没有找到相关文章

最新更新