可选的可为空参数

时间:2018-01-23 02:23:01

标签: asp.net-web-api

我工作的API的一个端点包含查询字符串提供的可选nullable参数。

端点的定义类似于以下示例:

[HttpGet]
[Route("nullable")]
public IHttpActionResult GetAnonymousTypeDefinition([FromUri]long? i = null)
{
    return Ok();
}

我承认,这是一个人为的,功能无用的例子。但是,当我在本地和我的“dev”环境中运行此示例时,它将返回200。但是,当此代码在我的“测试”环境中运行时,它返回500并且我提​​供了以下错误:

  

无法从程序集'Example.API加载'System.Nullable`1'类型,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。

为了确保我的测试环境运行的是支持可空类型的框架版本,我添加了另一个返回Environment.Version的端点,如下所示:

[HttpGet]
[Route("framework-version")]
public IHttpActionResult GetFrameworkVersion()
{
    return Ok($"{Environment.Version}");
}

上述端点返回以下值:

  

“4.0.30319.42000”

在这一点上,我有点不知道应该检查什么。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

确实,Instana的IL重写过程如何处理Nullable<T>存在问题。一旦我们意识到问题并且知道发生了什么,我们就提供了快速解决方案。

据说,我强烈建议您联系我们的支持团队以获得快速回复,并告知我们组件的任何问题。 该修复程序已经确认,将在接下来的24小时内发布。

如果您想在此之前获得修复,请与支持团队联系,我们将为您的团队提供补丁。

答案 1 :(得分:1)

事实证明我们在测试环境中评估了Instana。

我们的一位操作员做了以下事情:

卸载Instana代理并重新启动,然后......

从以下位置删除了与Instana相关的注册表项:

hklm/software/Microsoft/Fusion/GACChangeNotfification/default
hklm/software/microsoft/tracing/instana*
hklm/software/wow6432Node/microsoft/tracing/instana*

取消注册以下DLL:

regsvr32 /u "C:\Program Files (x86)\Instana\instana-agent\data\repo\com\instana\agent-windows-extensions\1.3.1\agent-windows-extensions-1.3.1\tracing\Instana.Profiler_x86.dll"
regsvr32 /u "C:\Program Files (x86)\Instana\instana-agent\data\repo\com\instana\agent-windows-extensions\1.3.1\agent-windows-extensions-1.3.1\tracing\Instana.Profiler_x64.dll"

答案 2 :(得分:1)

Instana我们遇到了同样的问题。今天下午我们为Instana代理商收到了两个新的dll。更换这些并重新启动代理后,一切都开始重新运行。 Instana将发布修复此问题的新版本代理。