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

you*_*ero 8 c# asp.net configuration

我目前正在做一个学校项目,我可以让学生和老师搜索相关的工作.

我试图进入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:
Run Code Online (Sandbox Code Playgroud)

源文件:c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\ASP.NETWebAdminFiles\App_Code\WebAdminPage.cs行:989

-

无论如何我可以解决这个问题,还是我必须重做我的整个项目?(希望不是因为完成了很多工作.)

我是故障排除的新手,所以一步一步的指南将非常感谢.谢谢!

ria*_*ndl 9

使用任何Visual Studio打开ASP.NETWebAdminFiles网站

Add - Existing Website
Browse to C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

运行您的网站

http://localhost:8181/webadmin/default.aspx?applicationPhysicalPath=B:\TFS\MyWebsite\MyWebsiteRoot\&applicationUrl=/
Run Code Online (Sandbox Code Playgroud)

  • 我必须以管理员身份运行VS来修改文件,现在没关系. (2认同)

GTH*_*ten -1

StringUtil是您项目中的一个(静态)类。这个类很可能定义为:

private static void StringUtil
Run Code Online (Sandbox Code Playgroud)

这意味着您WebAdminPage看不到它,因为它是private. 这将导致您看到的错误。将其更改为:

public static void StringUtil
Run Code Online (Sandbox Code Playgroud)

现在任何班级都可以随时使用它。

请阅读Microsoft 文档中有关保护级别的更多信息:

编辑

再次查看错误代码后,我发现名称空间为StringUtilis System.Configuration.StringUtil,这意味着这是一个系统类,而不是项目中的类。根据微软的源代码,这个类被定义为static internal class StringUtil. 根据之前有关保护级别的链接,我们可以看到:

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

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