Tôi có ứng dụng Web ASP.NET 4.0 cũ được sản xuất trong một thời gian. Tôi hiện đang thêm chức năng bổ sung dưới dạng một dịch vụ WebAPI REST vào nó.Hành vi khác nhau khi "bên ngoài" một số cài đặt cấu hình nhất định vào các tệp bên ngoài
Thêm các gói WebAPI NuGet cũng nói thêm một mục vào web.config
của tôi cấu hình phiên bản gói runtime NewtonSoft.Json:
Bây giờ, kể từ khi tôi có cấu hình của tôi "compartementalized" , Tôi muốn đặt tệp này vào một tệp riêng biệt runtime.config
và tham chiếu nó từ chính web.config
:
Khi tôi làm điều này, đột nhiên đăng ký của tôi về các tuyến đường WebAPI trong global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
...
// Route #1
GlobalConfiguration.Configuration.Routes.MapHttpRoute("Route1", "test/{list}/{check}", new { Controller = "Devices" });
...
}
không thành công với một ngoại lệ:
System.IO.FileLoadException là unhandled bởi người dùng mã
nhắn = các tập tin hoặc lắp ráp "Newtonsoft.Json, Phiên bản = 4.5.0.0, Văn hóa = trung lập, PublicKeyToken = 30ad4fe6b2a6aeed" hoặc một phụ thuộc không thể được tìm thấy. Source = System.Net.Http.Formatting
FileName = Newtonsoft.Json, Version = 4.5.0.0, Culture = trung tính, PublicKeyToken = 30ad4fe6b2a6aeed
Đối với tôi, nó có vẻ như thể ra ngoài runtime.config
không đang được đọc cùng lúc với nội dung của số web.config
...... điều này khá đáng ngạc nhiên đối với tôi, tôi có thể mong đợi rằng toàn bộ web.config
bao gồm bất kỳ tệp cấu hình phụ "được externalized" nào sẽ được đọc trước bất kỳ mã nào trong global.asax.cs
đang được thực hiện ...
Mọi thông tin chi tiết? Tôi thậm chí không biết tìm kiếm thông tin chi tiết ở đâu trên MSDN ....
Có vẻ như bạn không phải là người đầu tiên - http://world.episerver.com/Blogs/Magnus-Rahl/Dates/2011/6/Todays-gotcha-configSource-on-the-runtime-section-element/ và https://social.msdn.microsoft.com/Forums/vstudio/en-US/7552df69-d3a0-49e4-b45f-0fa4972fa64c/assembly-version-redirect-doesnt-work-with-a-configsource-in-runtime? diễn đàn = clr. Không chắc chắn nếu/nơi nó được bảo hiểm trên MSDN như vậy. –
@AlexeiLevenkov: nếu bạn thêm câu trả lời này làm câu trả lời, tôi sẽ vui vẻ chấp nhận nó :-) –