Asp.net Webapi CORS与Thinktecture.IdentityModel

时间:2012-08-27 22:52:05

标签: asp.net-web-api cors thinktecture-ident-model

我正在研究与此网址中描述的Thinktecture.Identitymodel相关的解析Asp.net Webapi CORS问题 http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/

我正在使用VS2012和.Net 4.5 我在这里遇到了几个问题:

1)这是我提出请求时遇到的错误

  

尝试将元素作为与数组不兼容的类型进行访问   在执行当前期间发生了未处理的异常   网络请求。请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。   System.ArrayTypeMismatchException:尝试以元素形式访问元素   类型与数组不兼容。

     

[ArrayTypeMismatchException:尝试将元素作为类型进行访问   与数组不兼容。]
  System.Collections.Generic.List`1.Insert(Int32 index,T item)+62
  Galaxy.CorsConfig.RegisterCors(HttpConfiguration config)+99
  Galaxy.WebApiApplication.Application_Start()+377

     

[HttpException(0x80004005):尝试访问元素作为类型   与数组不兼容。]
  System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext的   上下文,HttpApplication app)+12864673
  System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr的   appContext,HttpContext上下文,MethodInfo []处理程序)+175
  System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,   MethodInfo [] handlers,IntPtr appContext,HttpContext context)+304
  System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的   appContext,HttpContext context)+404
  System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的   appContext)+475

     

[HttpException(0x80004005):尝试访问元素作为类型   与数组不兼容。]
  System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+12881540   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)   +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest)   wr,HttpContext context)+12722601

我的应用程序池指向Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.17929

2)我的第二个问题是在WebApi中提到的事情之后。我还需要为IIS添加HTTPmodule吗?

这应该很容易实现。我不知道我在这里失踪了什么。 任何指针都非常受欢迎。

感谢。

3 个答案:

答案 0 :(得分:1)

我有一个非常类似的问题,因为Thinktecture.IdentityModel.Web 1.4引入了HttpClient 0.6,它引用了System.Net.Http * v2.0程序集,但MVC中的HttpHanders列表需要4.0。一旦我删除了Web pkg及其依赖项,事情又恢复了工作。

答案 1 :(得分:0)

我发现我的程序集版本不匹配。我的实际项目是.Net 4.0,而Thinktecture是.Net 4.5。

一旦我确定它有效。

答案 2 :(得分:0)

与Ben的上述解决方案类似,我的v3.5.0版Thinktecture.IdentityModel出现了这个问题,因为我的web.config中引用了旧版本的System.Net.Http(2.2.13.0)并安装在bin文件夹中

从我的web.config中删除dependentAssembly绑定并删除旧的System.Net.Http .dll解决了这个问题。

这是针对.NET 4.5项目的。