我们将 CodeEffects 规则编辑器嵌入到 MVC 视图中。
编辑器在编辑规则时运行良好,但有时编辑器 RuleModel 对象在提交时未实例化/绑定在服务器端的操作控制器中(空引用异常)。我们的代码如下:
在视图中:
<div class="clear" style="margin-top: 20px">
@{
Html.CodeEffects().RuleEditor()
.Id("ruleEditor")
.ShowToolBar(false)
.Rule(Model.Rule)
.Mode(RuleType.Evaluation)
.Render();
}
</div>
在控制器中:
public ActionResult UpdateRuleSet(CreateRuleSetModel model, RuleModel ruleEditor, RuleModel ruleEditorExceptions, string submit, FormCollection form)
{
//ruleEditor object is null (not being properly bound from form?)
//ruleEditorExceptions model is instantiated properly
...
}
我们无法重现此错误,因为它仅发生在某些服务器系统上,而不发生在其他系统上(某些测试环境和一个实例中的生产环境 - 从未在本地发生)。规则的复杂性在这个问题上没有任何价值(可以是简单的规则)。
奇怪的是,应用程序池回收停止了问题并且编辑器再次开始工作(在之前破坏应用程序的相同规则上)。此外,一条规则可以破坏一个客户端(浏览器)上的应用程序,而其他浏览器可以毫无问题地保存相同的规则(同时)。
目前我们怀疑客户端(表单提交)但无法确认(池回收解决方法只会增加谜团)。
我们使用 CodeEffects.Rule.dll 版本 4.1.2.6。(在 .NET 4.0 框架上)。
非常感谢任何指导(CE 更新除外)。