mar*_*c_s 5 c# webforms web-config asp.net-4.0 asp.net-web-api
我有一个遗留的ASP.NET 4.0 Webforms应用程序已经生产了一段时间.我现在正以WebAPI REST服务的形式向其添加其他功能.
添加WebAPI NuGet包还在web.config配置NewtonSoft.Json包运行时版本中添加了一个条目:
现在,因为我的配置是"compartedmentalized",我想把它放到一个单独的runtime.config文件中并从main引用它web.config:
<runtime configSource="runtime.config" />
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我突然注册了WebAPI路由 global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
...
// Route #1
GlobalConfiguration.Configuration.Routes.MapHttpRoute("Route1", "test/{list}/{check}", new { Controller = "Devices" });
...
}
Run Code Online (Sandbox Code Playgroud)
失败,但有例外:
System.IO.FileLoadException
未被用户代码Message =文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或无法找到依赖项处理.Source = System.Net.Http.Formatting
FileName = Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed
对我来说,似乎外化runtime.config不是与web.config自身的内容同时阅读......这对我来说相当令人惊讶,我本来期望整体web.config包括任何"外化"子在执行任何代码之前,将读取配置文件global.asax.cs...
任何见解?我甚至不知道在MSDN上搜索这一级别的详细信息去哪里....
web.config 包含 Windows Web 堆栈许多不同部分的配置信息。
其中一些告诉 IIS 做什么,一些告诉 .NET 做什么,一些告诉你的应用程序做什么。因此,不同元素的行为非常不同,具体取决于它们所针对的堆栈部分。
<runtime>级别相当低,请从 MSDN 中查看:
“运行时设置指定公共语言运行时如何处理垃圾收集以及要在配置文件中使用的程序集的版本。”
configSource="whatever"实际上是由 .NET 本身解析的,请从 MSDN 中查看:
在 ASP.NET 应用程序中,在运行时您可以将备用配置文件的名称分配给 ConfigSource 属性。
因此基本上 .NET<runtime>在解析之前会使用指定的设置运行configSource。
如果您在 Visual Studio 中使用 web.config 文件,您会发现智能感知会告诉您哪些属性可以去哪里。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |