Tôi đã có một ứng dụng Azure chức năng tạo ra một DLL biên dịch trước (vì vậy nó sử dụng các tệp .cs bình thường, không phải là phương thức .csx cũ hơn, trước VS2017). Trước đây, nó đã được nhắm mục tiêu .Net Framework 4.5.2. Tôi đã cập nhật nó lên 4.7 để sử dụng một số tính năng C# 7 mới. Tôi đã cập nhật gói NuGet của mình bằng cách thực hiện "Update-Package -Reinstall" và xác minh rằng tất cả chúng đều có mục tiêu "net47" được đặt trong tệp packages.config của tôi.HttpRequestMessageExtensions không được tìm thấy tại thời gian chạy trong Azure Chức năng
Mọi thứ đều biên soạn tốt. Nhưng khi tôi gọi một hàm sử dụng một trong hai phương thức 2 HttpRequestMessageExtensions
, tôi nhận được một ngoại lệ. Một ví dụ về các ngoại lệ là thế này:
Method not found: 'System.Net.Http.HttpResponseMessage
System.Net.Http.HttpRequestMessageExtensions.CreateResponse(
System.Net.Http.HttpRequestMessage, System.Net.HttpStatusCode)'.
Dưới đây là một ví dụ về một hàm kiểm tra nhỏ sẽ gây ra lỗi:
using System.Net;
using System.Net.Http;
public static HttpResponseMessage Run(HttpRequestMessage req)
{
return req.CreateResponse(HttpStatusCode.Accepted, "");
}
Khi gọi chức năng này với nói Postman, tôi sẽ nhận được nêu trên ngoại lệ. Tôi cũng nhận được một phương pháp tương tự không tìm thấy ngoại lệ khi tôi gọi GetQueryNameValuePairs()
trên số HttpRequestMessage
.
Tôi đã thử cập nhật gói NuGet của mình lên gói mới nhất, không có sự khác biệt. Tôi đã làm sạch và xây dựng lại và khởi động lại một loạt các lần, đảm bảo nuke thư mục bin và obj của tôi.
Tôi không chắc chắn vấn đề có thể là gì. Tôi đoán tôi có thể hạ cấp xuống .Net 4.5.2 nhưng tôi không muốn. Đối với một, tôi muốn sử dụng C# 7, và đối với hai, tôi muốn hiểu những gì vấn đề là thay vì tránh nó.
Cập nhật: thú vị. Vấn đề có vẻ là với System.Net.Http
. Nếu tôi hạ thấp xuống 4.0.0, mọi thứ sẽ hoạt động tốt. Nếu tôi nâng nó lên bất kỳ phiên bản cao hơn, tôi sẽ nhận được các vấn đề được liệt kê ở trên. Tôi đã thử chọn lọc từng gói của mình, từng cái một, với số phiên bản trước của chúng để tìm ra điều này. Sau đó tôi cập nhật tất cả nhưng phiên bản này lên phiên bản mới nhất và nó đã khắc phục sự cố.
Thú vị. Đối với tôi, nếu tôi đã ở trên phiên bản 4.0.0 (bao gồm 4.1.1 hoặc 4.3.1), tôi vẫn gặp vấn đề tương tự khi không tìm ra các phương thức mở rộng đó. Sử dụng phiên bản 4.0.0 khắc phục sự cố (trừ vấn đề xung đột được đề cập trong bài đăng gốc). – Architekt
Tôi đã cập nhật câu trả lời của mình để giải thích thêm. – Amor
Gỡ cài đặt gói 'System.Net.Http' (phiên bản 4.3.2 trong trường hợp của tôi) thực hiện mẹo đó! Các phần mềm đang chạy tuyệt vời một lần nữa! –