提问人:GDR 提问时间:11/10/2023 最后编辑:Heretic MonkeyGDR 更新时间:11/13/2023 访问量:64
Web 窗体 - .Net Framework 4.7.2
Web forms - .Net Framework 4.7.2
问:
我正在为一位客户更新他的 Web 应用程序 C#(以便将来迁移到更新的技术)。
有单独的配置,其中一种配置需要在发生异常时在堆栈跟踪中显示行号。生成和高级生成设置已调整(仅限 Pdb),然后部署到 Azure 应用服务。
现在,当发生错误时,会触发异常,但它仍然不显示行号。
调试信息已更新为: 高级构建设置
此外,在关闭 Visual Studio(社区/专业版和企业版)2022 时,在保存更改并重新打开项目后,“调试”信息已设置回“无”。
堆栈跟踪示例:
Stacktrace:
System.NullReferenceException: Object reference not set to an instance of an object.
at MyApp.SiteMaster.master_Page_PreLoad(Object sender, EventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.UI.Page.OnPreLoad(EventArgs e)
at System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
应为(粗体):堆栈跟踪:
System.NullReferenceException: Object reference not set to an
instance of an object.
at MyApp.SiteMaster.master_Page_PreLoad(Object sender, EventArgs e)
**in C:\code\MyApp\project\MyApp\Site.Master.cs:line 64**
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.UI.Page.OnPreLoad(EventArgs e)
at System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
答:
0赞
GDR
11/13/2023
#1
经过进一步调查,配置文件似乎有些“损坏”。即使在保存后,任何新的更改都会被丢弃。 该解决方案有多个项目(Web、类等),适用于任何项目。尽管默认的调试/发布配置文件不是问题。
为了解决这个问题,我不得不做一些重构:
- 从解决方案中删除有故障的配置文件
- 执行以清理任何剩菜
Get-Project -All | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("PROFILENAME") }
- 创建新的配置文件(注意:不要使用与已删除配置文件相同的名称,否则也无法正常工作)
- 在解决方案上设置配置(生成)Set the configuration on the solution (Build)
- 更新每个项目的生成配置文件
- 重命名/重新创建每个项目中的 App.XXXX.config / Web.XXXX.config 文件(如果适用)。
- 更新发布描述文件以使用新的配置文件。
Once all this is done, I could make changes to the build profile and build with the generation of the PDB. Better to be safe than sorry, I did this in a separate branch!!! Just to be on the safe side.
评论