我开发了一个通过 IIS 使用 RAD 服务器的应用程序。到目前为止,我已经成功创建了我的服务器和客户端应用程序。该应用程序提供了一些需要根据服务器端的 MSSQL 数据库进行验证的信息。在测试环境中一切正常,因为我的数据库连接参数是在我的 FDConnection 组件中设置的。
但是,我想通过在访问服务器时读取 ini 文件来更改连接参数。
在我的开发系统上,我可以将 ini 文件放在我的 bpl 输出所在的目录中。(即 C:\Users\Username\Projects\Application\Server\Win32\Debug)。然后服务器正确读取 ini 文件并更新组件参数。
我已根据 RAD 服务器文档在服务器上创建了目录,并将所需的 EMS 文件放在目录中。(即:C:\inetpub\RADServer\EMSServer) 因为这是 emsserver.ini 文件所在的位置,所以我认为这是放置我的 ini 文件的正确位置。如果我从这个目录启动 EMSDevServer.exe,ini 文件会被正确读取并且 FDConnection 参数会被更新。
但是,当我使用 ISAPI dll 通过 IIS 启动 RAD 服务器时,由于我的数据库连接失败,似乎找不到 ini 文件。
我尝试将 ini 文件放在 C:\Users\Public\Documents\Embarcadero\EMS 目录中,但这也不起作用。
以下是我访问在 DataModuleCreate 上调用的 ini 文件的代码。
procedure TdmSecurity.DataModuleCreate(Sender: TObject);
begin
SetConnectionStr(FDConnectionSTIKS);
end;
procedure SetConnectionStr(var FDConnectionSTIKS: TFDConnection);
var ConfigIni: TInifile;
DBServerName, DBName, Path: string;
begin
Path := GetCurrentDir;
ConfigIni := TIniFile.Create(System.IOUtils.TPath.Combine(Path, 'Config.ini'));
// ConfigIni := TIniFile.Create(System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'Config.ini'));
// ConfigIni := TIniFile.Create('C:\Users\leonard\Projects\LumberNowEMS\Server\Win32\Debug\config.ini');
DBServerName := ConfigIni.ReadString(AppNode, 'ServerName', 'ZEUS');
DBName := ConfigIni.ReadString(AppNode, 'DataBase', 'NOTHING');
// showmessage(configini.FileName);
with FDConnectionSTIKS.Params as TFDPhysMSSQLConnectionDefParams do
begin
DriverID := 'MSSQL';
Server := DBServerName;
Database := DBName;
UserName := DBUserID;
Password := DBPassword;
end;
ConfigIni.Free;
// showmessage(Path + '; DBName:' +DBName);
// Result := Format('DriverID=MSSQL;Server=%s;Database=%s;User_name=%s;Password=%s', [DBServerName, DBName, DBUserID, DBPassword]);
end;
我预计 IIS 会从同一个地方读取 ini 文件,但似乎并非如此。有人能告诉我应该把 ini 文件放在哪里,以便 IIS 可以正确访问它,或者可能是在 Rad 服务器中设置数据库连接的更好方法吗?如果有我可以访问的变量,也许我可以将我的参数放在 emsserver.ini 中。