[英]Unhandled exception thrown using Lucene.NET in an Azure Worker Role
我正在尝试创建一个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);
任何想法,将不胜感激。 我在网上搜索,一无所获。
谢谢。
我刚刚用正确的代码对我的辅助角色进行了测试(仅使用Standard Analyzer,并且辅助角色DLL的创建没有任何问题。如果使用自定义分析器可能会引起问题,请尝试隔离一下吗?) .net 4.5安装在同一台机器上?
如果您可以提供您的员工角色项目,我很乐意看一看,看看有什么问题。
编辑06/28/2012
在基于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);
我认为您的问题可能是特定于计算机的,因为没有错误并且工作角色运行正常。
鉴于Blob容器名称应使用小写字母http://msdn.microsoft.com/zh-cn/library/windowsazure/dd135715.aspx 。
尝试将目录/索引名称从“ SnowballIndex”更改为“ snowball-index”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.