asp.net-web-api – 间歇性“无法加载类型”System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter“”错误

前端之家收集整理的这篇文章主要介绍了asp.net-web-api – 间歇性“无法加载类型”System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter“”错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理一个包含ASP.NET WebAPI组件的项目.

间歇地,我得到以下错误

Could not load type
‘System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter’ from
assembly ‘System.Net.Http.Formatting,Version=5.2.3.0,
Culture=neutral,PublicKeyToken=31bf3856ad364e35’.

错误指向我的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);

在我的注册表中,我正在执行以下操作以默认返回JSON:

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes
                 .FirstOrDefault(t => t.MediaType == "application/xml");

if (appXmlType != null)
{
    config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}

(不确定来源,但是在本网站的某处发现默认情况下返回JSON,除非调用者询问其他内容)

我想继续返回JSON作为默认内容类型.

该项目包括另外两个(非WebAPI)网站(即MVC5),它们打到WebAPI站点.

这是有趣的事情:

>当应用程序部署到Azure时,不会发生这种情况
>这只会偶尔发生
>通常,我在调试器中运行一个MVC5站点,看到这个问题
>如果我在上述之后直接浏览到WebAPI网站,我会得到“黄色的死亡屏幕”,上面的错误
>有时,即使在冷启动之后,这个错误也不会出现,其他时候会出现

我目前正在解决的问题:

>如果我在调试器中运行WebAPI站点,如果出现错误,它将自动修复
>在调试器(上面)中运行后,我可以在调试器中重新启动一个MVC5站点,并且问题消失

只是重复一遍,当应用程序部署到Azure时,这不会发生.

我有这个项目的多个开发人员,在某个阶段我们都遇到同样的错误.

我参考以下Nuget软件包:

> Microsoft.AspNet.WebApi(版本5.2.3)
> Microsoft.AspNet.WebApi.Client(版本5.2.3)
> Microsoft.AspNet.WebApi.Core(版本5.2.3)
> Microsoft.AspNet.WebApi.Owin(版本5.2.2)
> Microsoft.AspNet.WebApi.WebHost(版本5.2.3)

如果我查看* .csproj文件,我有一个引用以下内容

<Reference Include="System.Net.Http.Formatting,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>

我已经检查了该网站的bin文件夹,其中的所有程序集都具有正确的版本,如上所述(包括System.Net.Http.Formatting.dll).

另请注意,在调试和开发过程中,三个网站中的每一个都在本地IIS下运行(外部资源的约束迫使我们这样做),所以我有:

> http:// localhost / site1
> http:// localhost / site2
> http:// localhost / api

进入调试会话变得麻烦,要得到这个错误,然后停止调试,在调试器下启动API站点,然后切换回我在开始时所做的工作.

不知道在哪里去跟踪这里发生了什么.有任何想法吗?

更新 – 2016年7月26日

仍然有这种情况发生.自从发布问题以来,已经更新了WebAPI以在自己的应用程序池中运行,但这似乎没有什么不同.

解决方法

卸载的Web API 2 NuGet软件包 再次安装了Web API 2 NuGet软件包.

猜你在找的asp.Net相关文章