2016-12-12 30 views
2

Interop.MSScriptControl.dllの代わりにCodeFluentRuntimeClientを使用し始めました。CodeFluent.RunTime.Client.dll - AccessViolationException

私はそれを動作させるために少しtweekingすることによってhereに成功します。

私たちは本番環境でdllを使い始めました。私たちがインストールしたマシンの1つ(Windows server 2012)では、Sytem.AccessViolationExceptionが発生しています。ここで

は、イベントビューアのスタックトレースです:

enter image description here

enter image description here

ドゥCodeFluentは、他のDLLをrequieres?

EDIT

は、ここでは、コードです:

public dynamic EvaluateVBScript(string token, string key, string script, IDictionary<string, object> parameterValuePair = null) 
{ 
    try 
    { 
     using (ScriptEngine engine = new ScriptEngine(ScriptEngine.VBScriptLanguage)) 
     { 
      List<object> parameters = new List<object>() { string.IsNullOrEmpty(token) ? string.Empty : ServiceManager.GetService<IServiceInstance>().GetService<IContextManager>(token).UserName }; 
      string extraParameters = string.Empty; 
      if (parameterValuePair != null && parameterValuePair.Count > 0) 
      { 
       extraParameters = "," + string.Join(",", parameterValuePair.Select(e => e.Key)); 
       foreach (var para in parameterValuePair) 
        parameters.Add(para.Value); 
      } 
      string parsedScript = string.Format(@"Function {0}(NecUserProfile {2}) 
      {1} 
      End Function", key, script, extraParameters); 
      ParsedScript parsed = engine.Parse(parsedScript); 

      dynamic value = parsed.CallMethod(key, parameters.ToArray()); 
      return (value != null) ? value.ToString() : string.Empty; 
     } 
    } 
    catch 
    { 
     throw; 
    } 
} 
+0

スクリプトの解析と実行に使用するコードを投稿できますか? – meziantou

+0

私はコードを掲載しました。ところで、このコードは多くのマシンで動作します。それは1つのマシンでのみ壊れます。 – billybob

+0

ランタイムのコードは、ここで見つけることができるものと基本的に同じです:http://stackoverflow.com/questions/4744105/parse-and-execute-js-by-c-sharp/24868314コードとそれが同じ失敗するかどうか参照してください?そうであれば、ParseTextの文字列パラメータの周りにMarshalAs(UnmanagedType.LPWStr)を追加してみることができますか?https://github.com/Taritsyn/MsieJavaScriptEngine/blob/master/src/MsieJavaScriptEngine/ActiveScript/IActiveScriptParse64 .cs –

答えて

0

いくつかのテストの後、私たちは、クライアントが自分のサーバーにインストールアンチウイルス(カスペルスキー)を持っていたことが分かりました。ウイルス対策を無効にした後も、アクセス違反エラーはまだ発生していました。

アンチウィルスをアンインストールした後、私たちは最後にJavaScriptを実行することができました。私たちは依然として、解析されるスクリプトをブロックしていたアンチウィルスにどのようなルールが設定されているかはまだ分かりません。

私は提案された解決策ではSimon Mounierでテストしませんでした。私はそれが問題を解決したかどうかわかりません。

解決策は、CodeFluent.Runtime.Client.dllを削除し、hereのソースコードを直接使用することでした。また、hereのように、parse関数で使用される文字列パラメータの周りにMarshalAs(UnmanagedType.LPWStr)]を追加します。

関連する問題