为什么我在将可为null的整数作为属性时遇到问题
本文关键字:属性 问题 遇到 整数 null 为什么 | 更新日期: 2023-09-27 18:00:09
我对一段现有的.NET 4代码进行了修改,以生成一个由可为null的整数组成的新属性。它在Windows服务中运行。
public static int? Port
{
get;
set;
}
其概念是,如果值为空,则忽略它,但如果不是,则使用它(非默认情况)
if (Port != null)
{
client = new Client( Server, Port.Value );
}
else
{
client = new Client( Server );
}
在我的机器上,它按预期工作。
然而,当部署到我们的测试服务器时,当从ASP.NET站点调用它时,我会遇到异常。以下是格式化的异常输出:
Exception: System.MissingMethodException
Exception Message: Method not found: 'Void NameOfAssembly.set_Port(System.Nullable`1<Int32>)'.
Exception Data: System.Collections.ListDictionaryInternal
Exception TargetSite: ** Unable to GetValue **
Exception HelpLink: NULL
这就好像代码没有正确部署,或者就是找不到自动获取/设置方法。一位同事做了一个后续的更改,在我们的测试环境中确实有效,所以我不认为这是部署问题。
我想不出会发生这种情况的任何原因,除了Windows Server(2008 R2)的操作可能与我开发的Windows 7不同之外,但这是一个延伸。
以前有人见过这个吗?
听起来ASP.NET网站以某种方式使用了程序集的过时版本。如果此错误发生在已编译的代码中(而不是.aspx页中),则可能是针对程序集的更新版本进行了编译,但部署时没有包含更新的程序集。
我会在Reflector中打开Assembly,然后真的确保方法在那里。
正如@Aasmund提到的,这可能是一个过时的程序集。你提到它在Windows服务中,你是否在部署后尝试重新启动该服务?
我认为应该使用if(Port.HasValue)而不是if(Port!=null)