【问题标题】:Unhandled exception thrown using Lucene.NET in an Azure Worker Role在 Azure 辅助角色中使用 Lucene.NET 引发未处理的异常
【发布时间】:2012-08-29 04:53:27
【问题描述】:

我正在尝试创建一个 Azure 辅助角色来索引 Lucene.NET 中的文档。

但是,当我创建 IndexWriter 时,它会失败并出现以下异常:

System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException'
         occurred in mscorlib.dll

如果我将项目构建为 .exe,则一切正常 - 不会引发异常。我正在使用 .NET Framework 4.0。

我的代码:

var cloudAccount = CloudStorageAccount.FromConfigurationSetting("LuceneBlobStorage");
var cacheDirectory = new RAMDirectory();
var azureDirectory = new AzureDirectory(
                                cloudAccount,"SnowballIndex", cacheDirectory);
var analyzer = new SnowballAnalyzer("English");

// !-- Exception thrown after this call
this.indexWriter = new IndexWriter(
             azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);

任何想法将不胜感激。我在网上搜了一下,一无所获。

谢谢。

【问题讨论】:

    标签: c# asp.net azure lucene.net azure-worker-roles


    【解决方案1】:

    我刚刚用我的工人角色用确切的代码进行了测试(只是使用标准分析器并且工人角色 DLL 是没有任何问题创建的。如果这可能是使用自定义分析器的问题,请您尝试隔离一下?也是偶然的,你在同一台机器上安装了 .net 4.5 吗?

    如果你能提供你的工人角色项目,我很想看看,看看可能有什么问题。

    于 2012 年 6 月 28 日编辑

    在我的基于 SDK 1.6 的工作角色中,我只安装 Lucene.Net.Store.Azure 包,然后在 OnStart() 函数中添加以下代码,没有错误:

    StorageCredentialsAccountAndKey creds = new StorageCredentialsAccountAndKey(_azure_storage_name_, _azure_storage_key);
    CloudStorageAccount cloudAccount = new CloudStorageAccount(creds, true);
    Lucene.Net.Util.Version version = Lucene.Net.Util.Version.LUCENE_29;
    var cacheDirectory = new RAMDirectory();
    IndexWriter indexWriter = null;
    AzureDirectory azureDirectory = new AzureDirectory(cloudAccount, "SnowballIndex", cacheDirectory);
    Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
    indexWriter = new IndexWriter(azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED); 
    

    我认为您的问题可能是特定于机器的,因为没有错误并且辅助角色运行良好。

    【讨论】:

    • 感谢您的帮助@AvkashChauhan。有几件事: 1. 我的机器上没有安装 .Net 4.5。 2. 我通过 VS2K10 使用 v1.6 SDK 创建了一个空的 Azure 辅助角色项目。 3. 我已将 Azure 版本设置为Lucene.Net.Util.Version.LUCENE_29。 4. 我将分析仪从Snowball 切换到Standard,但仍然是同样的问题。在我的Run() 方法中,我有上面的内联代码。不做任何花哨的事情。你有什么建议吗?谢谢。
    • 我已经添加了我的代码,它在工作角色中没有显示任何错误,请看一下。
    • @AvkashChahan - 为延误道歉。在模拟器中运行时仍然出现此错误。是在 emulator 下还是在 Azure 本身中为您成功运行?
    【解决方案2】:

    鉴于 blob 容器名称应为小写 http://msdn.microsoft.com/en-us/library/windowsazure/dd135715.aspx

    尝试将目录/索引名称从“SnowballIndex”更改为“snowball-index”。

    【讨论】:

    • 谢谢@Lucifure。我确实更改为所有小写字母。还是同样的问题。
    猜你喜欢
    • 2012-11-07
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多