我正在开发一个包含ASP.NET WebAPI组件的项目.
间歇性地,我收到以下错误:
无法从程序集'System.Net.Http.Formatting,Version = 5.2.3.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'加载类型'System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter'.
源错误指向我的GlobalConfiguration.Configure()调用:
Line 35: {
Line 36: AreaRegistration.RegisterAllAreas();
Line 37: GlobalConfiguration.Configure(WebApiConfig.Register); //<-- error here
Line 38: FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
Line 39: RouteConfig.RegisterRoutes(RouteTable.Routes);
Run Code Online (Sandbox Code Playgroud)
在我的注册表中,我正在执行以下操作以默认返回JSON:
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes
.FirstOrDefault(t => t.MediaType == "application/xml");
if (appXmlType != null)
{
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
Run Code Online (Sandbox Code Playgroud)
(不确定来源,但在此网站的某处发现默认情况下返回JSON,除非调用者要求其他内容)
我想继续将JSON作为默认内容类型返回.
该项目包括另外两个(非WebAPI)网站(即MVC5),它们访问了WebAPI网站.
这是有趣的事情:
我目前要解决的问题是:
只是重复,这DOES NOT发生过,当应用程序部署到Azure上.
我有多个开发人员在这个项目上工作,我们都在某个阶段遇到了同样的错误.
我正在引用以下Nuget包:
如果我查看*.csproj文件内部,我可以参考以下内容:
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
<Private>True</Private>
</Reference>
Run Code Online (Sandbox Code Playgroud)
我检查了bin网站的文件夹,其中的所有程序集都有正确的版本,如上面的列表(包括System.Net.Http.Formatting.dll).
还要注意,在调试和开发过程中,三个网站中的每一个都在运行Local IIS(外部资源的限制迫使我们这样做),所以我有:
http://localhost/site1http://localhost/site2http://localhost/api进入调试会话,获取此错误,然后停止调试,在调试器下启动API站点,然后切换回我在开始时所做的事情,变得很麻烦.
不知道还能去哪里追踪这里发生的事情.有任何想法吗?
更新 - 2016年7月26日
仍然有这种情况发生.自发布问题以来,已将WebAPI更新为在其自己的应用程序池中运行,但这似乎没有任何区别.
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |