0

我正在研究使用 Thinktecture.Identitymodel 解决 Asp.net Webapi CORS 问题,如此 URL http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-中所述thinktecture-identitymodel/

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

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

试图以与数组不兼容的类型访问元素 在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。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 context, HttpApplication app) +12864673
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] 处理程序)+175
System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[] 处理程序,IntPtr appContext,HttpContext 上下文)
+304 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext 上下文)+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 吗?

它应该很容易上手。我不知道我在这里错过了什么。任何指针都受到高度赞赏。

谢谢。

4

3 回答 3

1

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

于 2013-01-09T22:11:45.820 回答
0

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

一旦我修复它就可以了。

于 2012-08-29T14:23:52.370 回答
0

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

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

这是针对 .NET 4.5 项目的。

于 2013-10-29T18:41:32.977 回答