ASP.NET 项目中的 AIML Bot 无法找到 CONFIG 文件?

AIML Bot in ASP.NET Project is unable to find the CONFIG file?

我正在尝试为我的 ASP.NET Web 项目实施 AIML 机器人,但我不断收到此错误:

Unable to find the specified file.

Source Error: Line 31:
{

Line 32: myBot = new Bot();

Line 33: myBot.loadSettings(@"C:\Users\Public\Documents\SITE\bin\config");

Line 34: myUser = new User("DefaultUser", this.myBot);

Line 35: AIMLbot.Utils.AIMLLoader loader = new AIMLbot.Utils.AIMLLoader(this.myBot);

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
            myBot = new Bot();
            myBot.loadSettings(@"C:\Users\Public\Documents\SITE\bin\config");
            myUser = new User("DefaultUser", this.myBot);
            AIMLbot.Utils.AIMLLoader loader = new AIMLbot.Utils.AIMLLoader(this.myBot);
            this.myBot.isAcceptingUserInput = false;
            loader.loadAIML(@"C:\Users\Public\Documents\SITE\bin\aiml");
            this.myBot.isAcceptingUserInput = true;
}

我觉得在本地主机上 运行 时找不到配置文件夹?我做错了什么?

我知道这是一个旧的 post 但我添加了我的解决方案以防其他人遇到同样的问题。

您的问题是您没有指定设置文件。

这样试试:

 myBot.loadSettings(@"C:\Users\Public\Documents\SITE\bin\config\Settings.xml");

但是在部署应用程序时,问题仍然存在,因为即使您从文件中加载设置,配置文件夹中其他 xml 文件的路径也是相同的:

 return Path.Combine(Environment.CurrentDirectory, this.GlobalSettings.grabSetting("configdirectory"));

您可以做的是: 您可以在 C:\Windows\System32\inetsrv 中添加配置目录 或者您可以下载源代码并修改 PathToConfigFiles 属性 以满足您的要求,重新构建并添加对您的项目的引用。

我修改了 属性 这样的:

  private string _pathToConfigFiles;
        public string PathToConfigFiles
        {
            get
            {
                return Path.Combine(this._pathToConfigFiles, this.GlobalSettings.grabSetting("configdirectory"));
            }
            set
            {
                this._pathToConfigFiles = value;
            }
        }

当我实例化机器人时,我有:

   Bot myBot = new Bot();
   myBot.PathToConfigFiles = ConfigurationManager.AppSettings["AimlConfigPath"];
   myBot.loadSettings(ConfigurationManager.AppSettings["AimlSettingsPath"]);

其中 "AimlConfigPath" 是 D:\MyProject\bin 和 "AimlSettingsPath" 是 D:\MyProject\bin\config\Settings.xml 都添加到我的应用程序的 web.config 文件中。

对于任何 Web 项目,一个好的做法是将所有文件包含在项目中并访问这些文件根。

  1. @"C:\Users\Public\Documents\SITE\bin\config"@"C:\Users\Public\Documents\SITE\bin\aiml" 都应该在项目中。 (如果您的页面位于文件夹中,这只是一个示例)。

  1. 在 ServerMapPath 中使用波浪符“~”或“../”,您应该到达项目的 ROOT 文件夹并且访问应该如下所示(我能够使用 File.ReadAllLines("path") 例如)。
  2. 结果

*注意:重建/调试时,在重建期间始终将特殊文件设置为"Always copy",否则在部署Web 项目时该文件将不存在。