我遇到了ASP.NET MVC的问题Razor wiews使用来自Microsoft.IdentityModel命名空间的类/接口在设计和运行时模式中抱怨如下:
“名称空间'Microsoft'中不存在类型或命名空间名称'IdentityModel' (你错过了一个程序集引用吗?)“
同样似乎在运行时也出现在HttpCompileException中。
如果从同一项目的控制器或视图模型中引用,则上述不是问题。
下面给出了代码示例(下面代码中的IdentityModel第2行在设计中以红色加下划线):
@using System.Security.Principal;
@using Microsoft.IdentityModel.Claims;
@model IPrincipal
@{
ViewBag.Title = "Claims";
Layout = null;
}
@if (Model is IClaimsPrincipal)
{
IClaimsIdentity identity = Model.Identity as IClaimsIdentity;
...
上下文如下
我将Microsoft.IdentityModel.dll程序集(事先安装了WIF SDK)添加到我的asp.net mvc 4 Web项目中。
感谢
答案 0 :(得分:0)
您可以在服务器(和您的开发人员电脑)上安装wif。有些人说可以二进制部署,但在我们的项目中我们无法做到这一点
答案 1 :(得分:0)
如果找不到命名空间,请按以下方式添加:
<add namespace="System.Security.Principal" />
<add namespace="Microsoft.IdentityModel.Claims" />
在views文件夹的web.config中找到它。
我找到了另一种可能的解决方案:
http://social.msdn.microsoft.com/Forums/en/wcf/thread/f7fbcd78-48a0-4877-af47-2f5a1af6cc14
要使Microsoft.IdentityModel.dll程序集正常工作,您必须这样做 确保项目的目标框架不是.NET Framework 客户资料。
项目 - &GT; ProjectName属性......
似乎VS2010默认使用此Target Framework。
另一个人:http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/97cb3c15-9253-4ff1-a690-b203a65c0dfd
重新引用他的dll并且它有效。 (不是原来的问题 - 再往下看)