我尝试在Web应用程序中使用内容查询,但它会抛出异常" Lucene.Net.Store.AlreadyClosedException:此IndexReader已关闭"。请帮我解决这个问题。
var startSettings = new RepositoryStartSettings
{
Console = Console.Out,
StartLuceneManager = true, // <-- this is necessary
IsWebContext = false,
PluginsPath = AppDomain.CurrentDomain.BaseDirectory,
};
using (Repository.Start(startSettings))
{
var resultQuery = ContentQuery.Query("+InTree:@0 + DisplayName:*@1*", null, folderPath, q);
}
答案 0 :(得分:0)
从其他应用程序(应用程序域)连接到Sense / Net的推荐方法是通过REST API。它更容易维护并且涉及更少的配置(唯一的例外是您在Sense / Net应用程序本身内部工作,或者您只有一个应用程序而您不想从其他任何地方访问Sense / Net,而您愿意处理Sense / Net的本地索引及其所需的所有配置值等。
通过REST API进行连接并不意味着您必须手动发送HTTP请求(尽管这并不复杂):有一个 .Net客户端库可以帮助您。您可以通过客户端访问所有内容元数据或二进制文件,您可以上传文件,查询内容,管理权限等。
// loading a content
dynamic content = await Content.LoadAsync(id);
DateTime date = content.BirthDate;
// querying
var results = await Content.QueryAsync(queryText);
要在Web应用程序中使用它,您必须执行以下操作:
var sc = new ServerContext
{
Url = "http://example.com",
Username = "user1",
Password = "asdf"
};
var content = await Content.LoadAsync(id, sc);