_ViewStart.cshtml中DotRez Razor调试时出现ArgumentNullException问题
问题场景
使用Windows 10 + Visual Studio 2022 Professional,通过IIS Express或IIS附加调试应用时,抛出异常:
System.ArgumentNullException: 'Value cannot be null. Arg_ParamName_Name'
仅直接通过IIS启动应用不附加调试时,运行正常。
排查与解决步骤
核对调试环境变量
右键项目→属性→调试,检查环境变量列表,确保所有生产环境中存在的必要变量(尤其是代码中依赖的Name类参数)在调试配置中已正确设置,避免调试模式下遗漏关键配置。检查launchSettings.json配置
打开项目Properties目录下的launchSettings.json,查看IIS Express和IIS节点的配置,确认environmentVariables或commandLineArgs中没有缺失必填的Name相关参数,确保调试启动时参数传递正确。定位代码中的空值调用
在Visual Studio的异常设置中,勾选System.ArgumentNullException的“抛出时中断”选项,触发异常后直接定位到代码中传入Name参数为null的位置,检查该参数的来源(比如配置读取、依赖注入、用户输入等)在调试环境下是否未正确初始化。清理缓存并重建项目
执行以下操作:- 右键解决方案→清理
- 删除项目目录下的
bin和obj文件夹 - 重启Visual Studio后重新生成解决方案
缓存的调试配置或编译文件可能导致参数加载异常,清理后可排除此类问题。
验证应用池配置
对于IIS,检查应用池的身份权限是否能正常读取配置文件,确保应用池的.NET版本与项目目标框架一致;对于IIS Express,可查看.vs目录下的应用池配置文件,确认调试时的应用池设置与直接运行时一致。
内容的提问来源于stack exchange,提问作者Alejandro

