我们最近将我们的解决方案升级到了 .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# 页面仍然无法识别这些更改并且错误仍然存在。
奇怪的是,即使存在此现有错误,该网站仍将构建并可用,但此代码旨在解决的“更改密码”功能除外。
任何人都可以指出我在哪里可能缺少引用或程序集吗?
最佳答案
好的,我想我明白了。部分问题出在我们的 Web.config 中。
我将 c# 和 vb 的编译器版本更改为 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 的过程并不顺利。
关于c# - 找不到类型或命名空间名称 'MembershipUser',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168209/