C# CS0122:';System.Configuration.StringUtil';由于其保护级别,无法访问

C# CS0122:';System.Configuration.StringUtil';由于其保护级别,无法访问,c#,asp.net,configuration,C#,Asp.net,Configuration,我目前正在做一个学校项目,允许学生和教师寻找实习工作 我试图进入ASP.Net配置以添加用户和角色,但出现此错误 - “/asp.NetWebadmin文件”应用程序中出现服务器错误 编译错误说明:编译过程中发生错误 编译服务此请求所需的资源。请 查看以下特定错误详细信息并修改源 适当地编码 编译器错误消息:CS0122:“System.Configuration.StringUtil”为 由于其保护级别而无法访问 源错误: Line 987: Line 988: //

我目前正在做一个学校项目,允许学生和教师寻找实习工作

我试图进入ASP.Net配置以添加用户和角色,但出现此错误

-

“/asp.NetWebadmin文件”应用程序中出现服务器错误

编译错误说明:编译过程中发生错误 编译服务此请求所需的资源。请 查看以下特定错误详细信息并修改源 适当地编码

编译器错误消息: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\U Code\WebAdminPage.cs 电话号码:989

-

我有没有办法解决这个问题,或者我必须重做我的整个项目?(希望没有,因为有很多工作要做。)


我是一个相当新的故障排除,所以一步一步指南将非常感谢。谢谢

StringUtil
是项目中的一个(静态)类。此类最有可能定义为:

private static void StringUtil
这意味着您的
WebAdminPage
无法看到它,因为它是
private
。这将导致您看到的错误。将其更改为:

public static void StringUtil
现在任何类都可以随时使用它

有关保护级别的详细信息,请参阅:

编辑 再次查看错误代码后,我发现
StringUtil
的命名空间是
System.Configuration.StringUtil
,这意味着这是一个系统类,而不是项目中的类。 根据该类定义为
静态内部类StringUtil
。按照前面关于保护级别的链接,我们可以看到:

内部:访问权限仅限于当前程序集


这意味着
StringUtil
类只能从其所限定的程序集(DLL文件)中使用。由于无法将自己的代码添加到Microsoft的系统DLL中,因此无法使用此方法(因为Microsoft已将其添加为自己的内部使用)。

使用任何Visual Studio打开ASP.NetWebadmin文件网站

Add - Existing Website
Browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles
在wesbite项目中,浏览到C#文件

ASP.NetWebadmin文件\App\u代码\WebAdminPage.cs

转到第989行

将行注释掉
//string appId=StringUtil.GetNonRandomizedHashCode…

添加新行
string appId=“1”

保存网站,然后从Visual Studio卸载它

Add - Existing Website
Browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles
在CMD中运行iisexpress

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中修复它

Add - Existing Website
Browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles
文件-打开-网站

转到:C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NetWebadmin文件

打开

现在打开App\u Code\WebAdminPage.cs

后藤989线

注释掉当前文本并粘贴

string appId = (String.Concat(appPath, appPhysPath).GetHashCode()).ToString("x", CultureInfo.InvariantCulture);

现在重试

如果您安装了.NET Framework4.6,则会出现问题。这在4.6中已修复。1,因此只需它(或更高版本)即可解决此问题。无需更改代码。

检查您的目标框架(如果是4.0版),然后更改为3.5版,并构建项目并打开asp.net配置。这对我来说很有用。

我该在哪里更改代码?我似乎无法在代码中找到“private static void StringUtil”来更改它。如果您使用的是Visual Studio,您可以右键单击
StringUtil.GetNonRandomizedHashCode()
并选择“转到定义”。如何查找代码“StringUtil.GetNonRandomizedHashCode()”?对不起。我对疑难解答一窍不通。我用更多的信息更新了我的答案。我认为您运气不好,必须使用另一种方法生成您的
appId
。您报告的问题已在.net framework 4.6.1中修复,您可以从中下载它,这似乎是上一个framework的问题。net 4.6:自从我安装VS2015以来,我也遇到了同样的问题。我不确定,但我认为卸载VS2015和.net Fx 4.6可能会解决问题。@glacasa成功了吗?@Riandelange的答案对我来说很有效,我不需要卸载任何东西这是我找到的最好的答案…-->>我必须以管理员身份运行VS来修改文件,现在一切正常了。是的@Riandelange,你救了我从降级我的操作系统。工作得很好,谢谢。我将代码设置为以下值以避免冲突:字符串appId=Guid.NewGuid().ToString();