我工作的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”
在这一点上,我有点不知道应该检查什么。
有什么想法吗?
答案 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将发布修复此问题的新版本代理。