此方法从一个帐户(用户)到另一个帐户(视频游戏机)进行汇款,并设置用户忙VGM的标志。 相同的源代码引发异常:
public async Task<decimal> BusyVgmBy(string vgmId, string targetId, string billingSrc, string billingDst, decimal money, bool dir = true)
{
var result = await _ctx.AsyncDatabaseCommands.BatchAsync(new ICommandData[]
{
new ScriptedPatchCommandData
{
Key = vgmId,
Patch = new ScriptedPatchRequest
{
Script = @"this.BusyById = targetId;",
Values = {{"targetId", dir?targetId:null}}
}
},
new ScriptedPatchCommandData
{
Key = targetId,
Patch = new ScriptedPatchRequest
{
Script = @"this.Vgm = vgmId;",
Values = {{"vgmId", dir?vgmId:null}}
}
},
new ScriptedPatchCommandData
{
Key = billingSrc,
Patch = new ScriptedPatchRequest
{
Script = @"this.Balance -= money;",
Values = {{"money", money}}
}
},
new ScriptedPatchCommandData
{
Key = billingDst,
Patch = new ScriptedPatchRequest
{
Script = @"this.Balance += money;output(this.Balance)",
Values = {{"money", money}}
}
}
});
return result[3].AdditionalData.SelectToken("Debug[0]").Value<decimal>();
}
例外:
System.InvalidOperationException: Unable to execute JavaScript:
this.BusyById = targetId; ---> System.MissingMethodException: Method not found:
'Void Jint.Native.Object.ObjectInstance.set_NullPropagation(Boolean)'.
at Raven.Database.Json.JintOperationScope.ToJsObject(Engine engine, RavenJObj
ect doc, String propertyName)
at Raven.Database.Json.ScriptedJsonPatcher.ApplySingleScript(RavenJObject doc
, ScriptedPatchRequest patch, Int32 size, String docId, ScriptedJsonPatcherOpera
tionScope scope) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJso
nPatcher.cs:line 112
--- End of inner exception stack trace ---
at Raven.Database.Json.ScriptedJsonPatcher.ApplySingleScript(RavenJObject doc
, ScriptedPatchRequest patch, Int32 size, String docId, ScriptedJsonPatcherOpera
tionScope scope) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJso
nPatcher.cs:line 151
at Raven.Database.Json.ScriptedJsonPatcher.Apply(ScriptedJsonPatcherOperation
Scope scope, RavenJObject document, ScriptedPatchRequest patch, Int32 size, Stri
ng docId) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Json\ScriptedJsonPatche
r.cs:line 81
at Raven.Database.Actions.PatchActions.<>c__DisplayClass30.<ApplyPatch>b__28(
JsonDocument jsonDoc) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Actions\Pat
chActions.cs:line 239
at Raven.Database.Actions.PatchActions.ApplyPatchInternal(String docId, Etag
etag, TransactionInformation transactionInformation, Func`2 patcher, Func`1 patc
herIfMissing, Func`1 getDocsCreatedInPatch, Func`1 getDebugActions, Boolean debu
gMode, Boolean skipPatchIfEtagMismatch, String[] participatingIds) in c:\Builds\
RavenDB-Stable-3.0\Raven.Database\Actions\PatchActions.cs:line 107
at Raven.Database.Actions.PatchActions.ApplyPatch(String docId, Etag etag, Sc
riptedPatchRequest patchExisting, ScriptedPatchRequest patchDefault, RavenJObjec
t defaultMetadata, TransactionInformation transactionInformation, Boolean debugM
ode, String[] participatingIds) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\A
ctions\PatchActions.cs:line 269
at Raven.Database.Extensions.CommandExtensions.Execute(ICommandData self, Doc
umentDatabase database, BatchResult batchResult, String[] participatingIds) in c
:\Builds\RavenDB-Stable-3.0\Raven.Database\Extensions\CommandExtensions.cs:line
85
at Raven.Database.Extensions.CommandExtensions.ExecuteBatch(ICommandData self
, DocumentDatabase database, String[] participatingIds) in c:\Builds\RavenDB-Sta
ble-3.0\Raven.Database\Extensions\CommandExtensions.cs:line 27
at Raven.Database.DocumentDatabase.ProcessBatch(IList`1 commands, Cancellatio
nToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs
:line 1214
at Raven.Database.DocumentDatabase.<>c__DisplayClass59.<BatchWithRetriesOnCon
currencyErrorsAndNoTransactionMerging>b__56(IStorageActionsAccessor _) in c:\Bui
lds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 1117
at Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action`1 action, Ese
ntTransactionContext transactionContext) in c:\Builds\RavenDB-Stable-3.0\Raven.D
atabase\Storage\Esent\TransactionalStorage.cs:line 843
at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Buil
ds\RavenDB-Stable-3.0\Raven.Database\Storage\Esent\TransactionalStorage.cs:line
822
at Raven.Database.DocumentDatabase.BatchWithRetriesOnConcurrencyErrorsAndNoTr
ansactionMerging(IList`1 commands, CancellationToken token) in c:\Builds\RavenDB
-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 1118
at Raven.Database.DocumentDatabase.Batch(IList`1 commands, CancellationToken
token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\DocumentDatabase.cs:line 6
42
at Raven.Database.Server.Controllers.DocumentsBatchController.<BulkPost>d__8.
MoveNext() in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\Doc
umentsBatchController.cs:line 83
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext
()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncC
ore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext
()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot
ification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveN
ext()
以下是初始化文档商店的代码
_dbStore = new EmbeddableDocumentStore
{
DefaultDatabase = defaultDbName,
RunInMemory = false,
UseEmbeddedHttpServer = true,
//Configuration = new RavenConfiguration // 3690
//{
// DataDirectory = "Data/System",
// DefaultStorageTypeName = "esent",
// RunInMemory = false
//},
Conventions = new DocumentConvention()
{
CustomizeJsonSerializer = serializer => serializer.TypeNameHandling = TypeNameHandling.All
}
};
/* 3800 */
_dbStore.Configuration.DataDirectory = "Data/System";
_dbStore.Configuration.DefaultStorageTypeName = "esent";
_dbStore.Configuration.RunInMemory = false;
NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080);
_dbStore.Initialize();
解决方案:清除工作目录(删除旧库)