我正在尝试创建一个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);
任何想法都将不胜感激。我在网上搜索,一无所获。
感谢。
答案 0 :(得分:0)
我刚刚使用我的工作人员使用确切的代码进行了测试(仅使用标准分析器,并且创建了辅助角色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);
我认为您的问题可能是特定于机器的,因为没有错误且工作者角色运行良好。
答案 1 :(得分:0)
鉴于blob容器名称应为小写http://msdn.microsoft.com/en-us/library/windowsazure/dd135715.aspx。
尝试将目录/索引名称从“SnowballIndex”更改为类似“snowball-index”的内容。