CS0122:由于其保护级别,’System.Configuration.StringUtil’无法访问
我目前正在做一个学校项目,我可以让学生和老师搜索相关的工作。
我试图进入ASP.Net配置添加用户和角色,但我收到此错误。
–
‘/asp.netwebadminfiles’应用程序中的服务器错误。
编译错误说明:在编译为此请求提供服务所需的资源期间发生错误。 请查看以下特定错误详细信息并相应地修改源代码。
编译器错误消息:CS0122:由于其保护级别,’System.Configuration.StringUtil’无法访问
来源错误:
Line 987: Line 988: // Put together some unique app id Line 989: string appId = StringUtil.GetNonRandomizedHashCode(String.Concat(appPath, appPhysPath)).ToString("x", CultureInfo.InvariantCulture); Line 990: Line 991:
源文件:c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASP.NETWebAdminFiles \ App_Code \ WebAdminPage.cs行:989
–
无论如何我可以解决这个问题,还是我必须重做我的整个项目?(希望不是因为有很多工作要做。)
我是故障排除的新手,所以一步一步的指南将不胜感激。 谢谢!
使用任何Visual Studio打开ASP.NETWebAdminFiles网站
Add - Existing Website Browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles
在您的wesbite项目中,浏览到C#文件
ASP.NETWebAdminFiles \ App_Code文件\ WebAdminPage.cs
转到989行
注释掉行// string appId = StringUtil.GetNonRandomizedHashCode...
添加新的string appId = "1"
保存网站,从Visual Studio中卸载它
在CMD中运行IIS Express
iisexpress.exe /path:C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:/WebAdmin /port:8181 /clr:4.0 /ntlm
运行您的网站
http://localhost:8181/webadmin/default.aspx?applicationPhysicalPath=B:\TFS\MyWebsite\MyWebsiteRoot\&applicationUrl=/
在Visual Studio中
文件 – 打开 – 网站
转到:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ASP.NETWebAdminFiles
打开
现在打开App_Code \ WebAdminPage.cs
GoTo 989号线
注释掉当前文本并粘贴
string appId = (String.Concat(appPath, appPhysPath).GetHashCode()).ToString("x", CultureInfo.InvariantCulture);
现在重新尝试
如果您安装了.NET Framework 4.6,则会出现此问题。 这在4.6中得到修复。 1 ,所以只需下载它(或更高版本)即可解决问题。 无需更改代码。
检查你的目标框架,如果它是4.0然后更改为3.5并构建项目并打开asp.net配置它对我有用
StringUtil
是项目中的(静态)类。 此类很可能定义为:
private static void StringUtil
这意味着您的WebAdminPage
无法看到它,因为它是private
。 这将导致您看到的错误。 将其更改为:
public static void StringUtil
现在任何课程都可以随时使用它。
阅读Microsoft文档中有关保护级别的更多信息:
编辑
在再次查看错误代码之后,我看到StringUtil
的命名空间是System.Configuration.StringUtil
,这意味着这是一个系统类,而不是项目中的类。 根据Microsoft的源代码,此类被定义为static internal class StringUtil
。 按照上一个关于保护级别的链接,我们可以看到:
内部:访问仅限于当前程序集
这意味着StringUtil
类只能从它所包含的程序集(DLL文件)中使用。看到你无法将自己的代码添加到Microsoft的系统DLL中,你不能使用这种方法(因为微软已经添加了它)供自己内部使用)。
更改
string appId = StringUtil.GetNonRandomizedHashCode(String.Concat(appPath, appPhysPath)).ToString("x", CultureInfo.InvariantCulture);
至
string appId = ToString();
修理它