能够'访问类驻留在App_Code中

新成员
已加入
2019年8月4日
留言内容
2
编程经验
1-3
嗨,您好
我已经在ASP.NET中创建了一个网站,并创建了一个类并将其放在App_Code文件夹中。当我在本地运行网站时(http:// localhost:4300 / Default.aspx),效果很好。但是,当我将其上传到服务器并运行浏览器时,它会产生一个"编译器错误信息: CS0103:名称“ StaticHelpers”在当前上下文中不存在".

源错误:

第44行:if(int.TryParse(redRange.Text,红色))
第45行:{
第46行:color = StaticHelpers.getColor((字节)红色,(字节)蓝色,(字节)绿色,bGray);
第47行:}
第48行:

C#:
        // The following codes are in Default.aspx.cs

        public void showColorAndStatus()
        {
            green = int.Parse(rbl.SelectedValue);
            blue = int.Parse(ddl.SelectedValue);
            bGray = cbxGrayscale.Checked;

            if (int.TryParse(redRange.Text, out red))
            {
                color = StaticHelpers.getColor((byte)red, (byte)blue, (byte)green, bGray);
            }

            _show.ForeColor = color;
            _show.BackColor = color;
            _status.Text = "";
        }

        // The following codes are in StaticHelpers.cs which resides in the App_Code folder.

        public class StaticHelpers
        {
            public static Color getColor(byte red, byte blue, byte green, bool bGray)
            {
                Color color;

                if (!bGray)
                    color = Color.FromArgb(255, red, green, blue);
                else
                {
                    int greyScale = (red + green + blue) / 3;
                    color = Color.FromArgb(255, greyScale, greyScale, greyScale);
                }
                return color;
            }
        }

任何建议将不胜感激。
先感谢您。
 
由主持人最后编辑:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,893
位置
英国
编程经验
10+
移至Asp.Net论坛。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,457
位置
弗吉尼亚州切萨皮克
编程经验
10+
您是否尝试过iisreset,或者插入然后删除app_offline.htm来尝试重新加载应用程序池(并因此重新编译所有找到的代码)?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,893
位置
英国
编程经验
10+
在第9行上,您没有提供类型。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,457
位置
弗吉尼亚州切萨皮克
编程经验
10+
Just like lines 5 and 6 were just setting blue and green which are presumably class variables, I assume that red was also a class variable and so should not require a type.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,457
位置
弗吉尼亚州切萨皮克
编程经验
10+
什么 namespace is StaticHelpers declared in? Are you including that namespace?

您的部署过程到底是什么?您是从本地计算机中挑选文件,还是使用Visual Studio中的“发布到文件夹”选项,然后将该文件夹复制到IIS服务器中。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,893
位置
英国
编程经验
10+
但是未声明红色,因此必须指定类型。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,457
位置
弗吉尼亚州切萨皮克
编程经验
10+
But neither was blue, green, nor bGray. But somehow the compiler didn't complain about lines 5, 6, 7, or 9. It was complaining about the StaticHelpers class not existing in the current context. ... unless the OP is hiding other error messages that he is encountering.

即使OP将第9行写为:
C#:
if (int.TryParse(redRange.Text, out int red))
并进一步假设OP使用的ASP.NET版本支持 C#7.0语法, it still shouldn't affect the error regarding StaticHelpers not being declared within the context.
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,893
位置
英国
编程经验
10+
源错误:
第44行:if(int.TryParse(redRange.Text,红色))
尽管正在运行什么版本,但仅指出明显的问题。查看错误报告的位置,我想这与它有关。
编译器错误信息: CS0103
该编译器问题报告了一个一般的作用域问题或一个不可达的声明,其中之一通常表示它可能超出了操作代码的范围。看这里 : 编译器错误CS0103

As for this : public class StaticHelpers - while you may have static members in an instance based class which are still reachable without creating instance of them, it really does defeat the ideals behind having a static class that isn't actually static itself.

Next; since you are trying to parse as int : green = int.Parse(rbl.SelectedValue); - I assume green is meant to be int also. So you shouldn't be getting any error there when casting, which brings me back to the above compiler message error, and conclude it must be some kind of declarative issue. Given our OP only has 1-3 years experience, it is best that they post the rest of their code so that it can be assessed fully, instead of arguing semantics and what might and might not be.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,457
位置
弗吉尼亚州切萨皮克
编程经验
10+
该编译器问题报告了一个一般的作用域问题或一个不可达的声明,其中之一通常表示它可能超出了操作代码的范围。看这里 : 编译器错误CS0103
是的,但是C#编译器也很聪明,可以报告找不到的符号。在这种情况下,OP报告无法找到的符号是StaticHelpers,而不是红色。如果这是C ++编译器抱怨符号不在当前上下文中,那么即使错误是关于StaticHelpers的,如果有人抱怨第11行,我也会对红色表示怀疑。

此外,如果未声明红色,则在到达第11行之前,应该存在一个错误,即红色不在当前作用域的第9行...甚至到第11行。ASP.NETC#的App_Code编译器的本质是:与Visual Studio或csc.exe不同,它会在第一次失败时停止,并且不会麻烦报告后续错误。因此,如果第9行出现错误,则不会报告第11行的错误。但是我们的OP告诉我们错误在第11行,因此这意味着第9行是好的,红色在范围内声明为某处。
 
最佳 底部