【问题标题】:Razor view (MVC .NET 4.0) and Microsoft.IdentityModelRazor 视图 (MVC .NET 4.0) 和 Microsoft.IdentityModel
【发布时间】:2012-10-07 03:52:14
【问题描述】:

我遇到了使用 Microsoft.IdentityModel 命名空间中的类/接口的 ASP.NET MVC Razor 视图的问题,在设计和运行时模式下都抱怨如下:

“命名空间‘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;
    ...

上下文如下所示

  • asp.net 4.0 MVC Web 应用程序
  • VS2010
  • WIF 3.5

我将 Microsoft.IdentityModel.dll 程序集(预先安装了 WIF SDK)添加到我的 asp.net mvc 4 web 项目中。

谢谢

【问题讨论】:

    标签: asp.net-mvc wif


    【解决方案1】:

    您可以在您的服务器(和您的开发人员电脑)上安装 wif。有人说它可以二进制部署,但在我们的项目中我们不能这样做

    【讨论】:

    • 感谢您的及时回答:WIF SDK 和 WIF 运行时已安装,正如我在上下文中所写的那样
    【解决方案2】:

    如果找不到命名空间,可以这样添加:

    <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 客户资料。

    项目-> 项目名称属性...

    看来VS2010默认使用这个Target Framework。

    这里还有一个:http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/97cb3c15-9253-4ff1-a690-b203a65c0dfd

    重新引用了他的 dll 并且它起作用了。 (不是原来的问题——往下看)

    【讨论】:

    • 我更新了我的答案 - 试试看是否有帮助。客户端配置文件的 Microsoft.IdentityModel 似乎存在问题。
    • 我对关于客户资料的那一项也很感兴趣。线索是 ASP.NET MVC 项目无论如何都不提供客户端配置文件选项。这样就无法解决我的问题
    • 太糟糕了。是我最好的猜测。祝您找到解决方案好运。
    猜你喜欢
    • 2013-10-15
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多