类型或命名空间名称' MembershipUser'无法找到

时间:2014-08-06 19:04:19

标签: c# asp.net .net-4.5

我们最近将我们的解决方案升级到.NET 4.5。

我已经明白System.Web.Security.MembershipUser已被移至System.Web.ApplicationServices.dll。

我在web.config文件中添加了对我们网站的引用:

<add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

我在c#页面中使用了正确的“using”语句:

using System.Web.ApplicationServices;

但是,以下代码会在MembershipUser上抛出错误:

MembershipUser u = Membership.GetUser(User.Identity.Name);

我完全不确定此时该怎么做。我一整天都在研究这个并且已经应用​​了一些更改(即web.config更改)但是这个c#页面仍然无法识别更改并且错误仍然存​​在。

奇怪的是,即使存在此错误,该网站也将构建并可用,但此代码旨在解决的“更改密码”功能除外。

任何人都可以指出我可能缺少参考或装配的地方吗?

2 个答案:

答案 0 :(得分:2)

好的,所以我想我得到了这个。部分问题出现在我们的Web.config中。看起来像。

我将c#和vb的CompilerVersions更改为4.0:

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
        <providerOption name="CompilerVersion" value="v4.0"/>
        <providerOption name="WarnAsError" value="false"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
        <providerOption name="CompilerVersion" value="v4.0"/>
        <providerOption name="OptionInfer" value="true"/>
        <providerOption name="WarnAsError" value="false"/>
      </compiler>
    </compilers>
  </system.codedom>

此外,我们的编译目标框架未指定4.0。

<compilation debug="true" batch="false" batchTimeout="7200" targetFramework="4.0">

现在建立网站后,MembershipUser现在会按照我的预期显示出来。好哇。

从2.0升级到4.5并不顺利。

答案 1 :(得分:0)

对于.NET Framework 4.0或更高版本,请添加System.Web.ApplicationServices.dll的引用