从 F# Interactive 使用 RavenDb FilesStore 挂起
Using RavenDb FilesStore from F# Interactive hangs
我正在尝试从 f# 脚本访问 ravendb 文件系统。
我有这个代码:
#r "libs/Raven.Abstractions.dll"
#r "libs/Raven.Client.Lightweight.dll"
open Raven.Client.FileSystem
let fs = new FilesStore(Url = "http://localhost:8080", DefaultFileSystem = "TestFS")
let s = fs.Initialize()
printfn "%A" s.Identifier
如果我在文件上使用 fsi
执行脚本或使用 fsc
编译脚本,它会按预期运行并打印 http://localhost:8080
但如果我在 [=15] 中执行它=] 在 VisualStudio 中它只是挂在 fs.Initialize()
行
现在,如果我用 false
(ensureFileSystemExists) 调用 Initialize
方法,它在交互中运行正常。
为什么会这样?
这是FilesStore.cs code的一块:
if (ensureFileSystemExists && string.IsNullOrEmpty(DefaultFileSystem) == false)
{
try
{
AsyncFilesCommands.ForFileSystem(DefaultFileSystem)
.EnsureFileSystemExistsAsync()
.Wait();
}
catch(Exception)
{
if (failIfCannotCreate)
throw;
}
}
ensureFileSystemExists
变量是 false
我将第二次调用传递给 Initialize
(适用于 VS 的 F# 交互式)
更新到最新版本,应该可以解决这个问题。
根本问题是默认使用的 TPL 调度程序。
我正在尝试从 f# 脚本访问 ravendb 文件系统。
我有这个代码:
#r "libs/Raven.Abstractions.dll"
#r "libs/Raven.Client.Lightweight.dll"
open Raven.Client.FileSystem
let fs = new FilesStore(Url = "http://localhost:8080", DefaultFileSystem = "TestFS")
let s = fs.Initialize()
printfn "%A" s.Identifier
如果我在文件上使用 fsi
执行脚本或使用 fsc
编译脚本,它会按预期运行并打印 http://localhost:8080
但如果我在 [=15] 中执行它=] 在 VisualStudio 中它只是挂在 fs.Initialize()
行
现在,如果我用 false
(ensureFileSystemExists) 调用 Initialize
方法,它在交互中运行正常。
为什么会这样?
这是FilesStore.cs code的一块:
if (ensureFileSystemExists && string.IsNullOrEmpty(DefaultFileSystem) == false)
{
try
{
AsyncFilesCommands.ForFileSystem(DefaultFileSystem)
.EnsureFileSystemExistsAsync()
.Wait();
}
catch(Exception)
{
if (failIfCannotCreate)
throw;
}
}
ensureFileSystemExists
变量是 false
我将第二次调用传递给 Initialize
(适用于 VS 的 F# 交互式)
更新到最新版本,应该可以解决这个问题。 根本问题是默认使用的 TPL 调度程序。