【发布时间】:2020-11-24 15:27:51
【问题描述】:
我有一个针对 .NET Framework 4.7.2 版本的 VB.NET 项目。它是一个部署到 IIS 的 ASP WebForms 项目(是的!可怜的我)。
现在我正在清理这个地方。我打算在模型类中使用自动实现的属性来减少已经太多的 VB 代码。
它在开发中运行良好。但我终其一生都无法理解为什么它不能在生产环境中工作。
问题归结为这样的类:
Public Class ValorAtributo
Public Sub New(codigo As String, descricao As String)
Me.Codigo = codigo
Me.Descricao = descricao
End Sub
Public ReadOnly Property Codigo As String
Public ReadOnly Property Descricao As String
End Class
在 IIS 生产服务器中,它在 Me.Descricao = descricao 行中失败,并显示以下消息:
BC30456:“Descricao”不是 'PesquisaAtributo.ValorAtributo'。
调查 IIS 部署
我对所有 .NET 风格以及它们究竟在哪里发挥作用感到非常困惑。我的理解是 IIS 使用 .NET CLR 而不是 .NET Framework。但至少说了一半,与上一条消息一起,可以看到生产 IIS 正在使用不同的版本。
Microsoft .NET Framework 版本:4.0.30319; Versão do ASP.NET:4.7.3535.0
这很令人困惑,因为 web 配置文件只提到了 .NET 4.7.2。
<compilation debug="true" strict="false" explicit="true" targetFramework="4.7.2">
...
<httpRuntime targetFramework="4.7.2" maxRequestLength="15360"/>
更令人困惑的是,IIS 上的应用程序池仅显示最高 4.0 的 .NET(这次是 CLR,我找不到 .NET Framework)。
尝试解决方案
所以我需要(想要)使用自动实现的属性。必须对此进行修复。
我有根据的猜测是,这是由过时的 .NET Framework 引起的。但是我没有得到我应该做什么。我已经阅读了有关其工作原理的冲突版本,IIS 使用 CLR 与使用 .NET。简而言之,就是一团糟。
你们中的任何一位高效的 Microsoft 开发人员都可以启发我了解我在这里缺少什么吗?
更新
进一步观察
我在最初写这篇文章时错过的异常的网络版本有更长的跟踪。
它很长,所以在玩诡计,这是一个pastebin。 https://pastebin.com/1NhY6SMa
以前的,但可能类似?问题
VB Auto Implemented Property not compiling
出乎意料
该代码以前可以编译并且运行良好。我可以尝试使用 git 来尝试找出发生了什么,我可以肯定地说这个文件从那以后就没有改变过。
【问题讨论】:
-
您是否通过 IIS 的 Windows 功能安装了 ASP.NET4.7 和 .NET Extensibility4.7?
-
@AlexB。嗨,我添加了已安装功能的屏幕截图。我不确定这是否是正确的地方,但 ASP 4.7 没有选项。安装 .NET 4.7.2 Runtime 表示安装了较新的版本。
-
什么操作系统正在运行您的 IIS?
-
This 安装程序适用于 MS Servcer 2012、2016 和 Win 10 等。
-
嗯,很奇怪。您可以尝试卸载并重新安装 4.7.2。但我没有想法。
标签: asp.net vb.net iis webforms