我在MsOrleans上做了POC,并试图在ado.net中保存颗粒。但在启动思洛时出现以下错误。
: Orleans.Runtime.SiloLifecycleSubject[100450]
Lifecycle observer Orleans.Storage.AdoNetGrainStorage-OrleansStorage failed to start due to errors at stage 10000.
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
fail: Orleans.Runtime.SiloLifecycleSubject[100450]
Lifecycle start canceled due to errors at stage 10000
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
fail: Orleans.Runtime.Silo[100439]
Exception during Silo.Start
Orleans.Runtime.OrleansLifecycleCanceledException: Lifecycle start canceled due to errors at stage 10000 ---> System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
--- End of inner exception stack trace ---
at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 63
at Orleans.Runtime.Scheduler.AsyncClosureWorkItem.Execute() in D:\build\agent\_work\23\s\src\Orleans.Runtime\Scheduler\ClosureWorkItem.cs:line 63
at Orleans.Runtime.Silo.StartAsync(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Silo\Silo.cs:line 264
Orleans.Runtime.OrleansLifecycleCanceledException: Lifecycle start canceled due to errors at stage 10000 ---> System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
--- End of inner exception stack trace ---
at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 63
at Orleans.Runtime.Scheduler.AsyncClosureWorkItem.Execute() in D:\build\agent\_work\23\s\src\Orleans.Runtime\Scheduler\ClosureWorkItem.cs:line 63
at Orleans.Runtime.Silo.StartAsync(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Silo\Silo.cs:line 264当我在没有持久化的情况下启动竖井时,它工作正常。
代码示例:
思洛存储器adonet配置:
builder
.AddAdoNetGrainStorage("OrleansStorage", options =>
{
options.Invariant = "System.Data.SqlClient";
options.ConnectionString = orleansConfig.ConnectionString;
});Grain类:
[StorageProvider(ProviderName = "OrleansStorage")]
class CatalogGrain : Orleans.Grain<CatalogState>, ICatalogGrain
{
public async Task AddProductGrainToCatalog(IProductGrain productGrain)
{
State.Products.Add(productGrain);
await base.WriteStateAsync();
}
}
public class CatalogState
{
public CatalogState()
{
Products = new List<IProductGrain>();
}
public string CatalogId { get; set; }
public List<IProductGrain> Products { get; set; }
}发布于 2019-12-22 19:50:00
对于这个错误,我可以看到您已经运行了脚本来创建表,但是您错过了向其中添加数据的脚本。https://github.com/dotnet/orleans/blob/master/src/AdoNet/Orleans.Persistence.AdoNet/SQLServer-Persistence.sql文档确实提到了这是开发人员的一个常见错误。文档可以通过一步一步地添加how to而不是如此通用来更好。
无论如何,运行脚本并让我知道。
https://stackoverflow.com/questions/59272118
复制相似问题