【发布时间】:2017-07-24 00:33:10
【问题描述】:
我有一个创建预编译 DLL 的 Azure Function 应用程序(因此它使用普通的 .cs 文件,而不是 VS2017 之前的旧 .csx 方法)。以前,它的目标是 .Net Framework 4.5.2。我将它更新到 4.7,以便使用一些新的 C# 7 功能。我通过执行“Update-Package -Reinstall”更新了我的 NuGet 包,并验证它们都在我的 packages.config 文件中设置了“net47”目标。
一切都编译得很好。但是当我调用一个使用 2 个 HttpRequestMessageExtensions 方法之一的函数时,我得到了一个异常。一个例外的例子是:
Method not found: 'System.Net.Http.HttpResponseMessage
System.Net.Http.HttpRequestMessageExtensions.CreateResponse(
System.Net.Http.HttpRequestMessage, System.Net.HttpStatusCode)'.
下面是一个会导致错误的小测试函数示例:
using System.Net;
using System.Net.Http;
public static HttpResponseMessage Run(HttpRequestMessage req)
{
return req.CreateResponse(HttpStatusCode.Accepted, "");
}
使用说 Postman 调用此函数时,我将收到上述异常。当我在HttpRequestMessage 上调用GetQueryNameValuePairs() 时,我也得到了类似的方法未找到异常。
我已经尝试将我的 NuGet 包更新到最新版本,没有区别。我已经清理、重建并重新启动了很多次,确保对我的 bin 和 obj 目录进行核对。
我不确定可能是什么问题。我想我可以降级回.Net 4.5.2,但我宁愿不这样做。第一,我想使用 C# 7,第二,我想了解问题所在,而不是避免它。
更新:很有趣。问题似乎与System.Net.Http 有关。如果我将它降低到 4.0.0 一切正常。如果我将它提高到任何更高版本,我会得到上面列出的问题。我尝试有选择地将我的每个软件包一个一个地降低到它们以前的版本号以找出这一点。然后,我将除此之外的所有内容都更新到了最新版本,并解决了这个问题。
【问题讨论】:
标签: azure azure-functions c#-7.0