我正在研究与此网址中描述的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吗?
这应该很容易实现。我不知道我在这里失踪了什么。 任何指针都非常受欢迎。
感谢。
答案 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项目的。