小编Joh*_*mbo的帖子

传递到字典中的模型项的类型为'System.Web.Mvc.HandleErrorInfo',但此字典需要类型的模型项

每当我的应用程序发生错误时,我都无法在事件查看器中查看正确的错误.在它的位置我得到以下错误...

传递到字典中的模型项的类型为"System.Web.Mvc.HandleErrorInfo",但此字典需要"LayoutPageViewModel"类型的模型项

我明白了这个错误发生的原因(因为控制器试图将HandleErrorInfo类型的模型传递给原始视图)但我无法弄清楚的是如何阻止此错误出现在事件查看器中并显示真正的错误.

所以事件的顺序是:

  1. 应用程序中发生异常
  2. 默认错误处理尝试将类型为"System.Web.Mvc.HandleErrorInfo"的模型传递到默认布局页面,该页面接受"LayoutPageViewModel"模型
  3. 应用程序中发生另一个异常,因为布局正在传递"HandleErrorInfo"类型的模型
  4. 命中自定义错误500页面(在web.config中指定),它不引用任何布局:

    @{ Layout = null; }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 错误页面显示正确,但事件查看器中的异常不正确.

我已经尝试在Application_Start中设置HandleErrorAttribute过滤器的主和视图,但是它会停止在事件日志中注册的任何内容.我也试过将以下方法添加到控制器中......

protected override void OnException(ExceptionContext filterContext)
{
    filterContext.Result = new ViewResult {
        ViewName = "~/Views/Shared/Error.cshtml",                
    };
}
Run Code Online (Sandbox Code Playgroud)

但这与HandleErrorAttribute解决方法具有相同的结果.

有谁知道如何解决这个问题?

c# asp.net-mvc asp.net-mvc-4

7
推荐指数
1
解决办法
5318
查看次数

VSTS Build:用内部版本号替换令牌

我正在尝试在VSTS中构建应用程序时使用内部版本号更新名为"AppVersion"的web.config应用程序设置.

以下是我的构建步骤:

构建步骤

"替换标记"步骤会转换为构建设置的任何变量,并替换您在配置文件中设置的标记.这部分有效,但它不会做的是得到一个像构建号这样的环境变量并进行替换.它只会替换指定的任何文本.这是我的构建变量:

构建变量

所以在构建步骤完成后,我的应用程序设置是......

<add key="AppVersion" value="$(BuildNumber)" />

什么时候应该像......

<add key="AppVersion" value="20160520.1" />

谁能指出我正确的方向?非常感谢.

azure-devops azure-pipelines-build-task

4
推荐指数
2
解决办法
4197
查看次数