protected override void CreateChildControls() 
{#if DEBUG
return;
#endif
// If the user is already authenticated we have no work to do
if(Page.Request.IsAuthenticated)
{

if ( (User.IsInRole( "Global Administrators")) ||
(User.IsInRole("Site Administrators")) ||
(User.IsInRole("Global Moderators")) ||
(User.IsInRole("Site Moderators")))
{
return;
} base.CreateChildControls();
}
}这样用了后,这个语句if(Page.Request.IsAuthenticated) 老是说“检测到无法访问的代码”啊!

解决方案 »

  1.   

    有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译"。条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。
      

  2.   

    如果没有#define DEBUG
    那么下面的代码是不会编译到程序中的
    这种机制是为了减少代码的改动
    方便通过设定条件,编译出不同的版本,不用修改代码#if DEBUG
    return;
    #endif你的问题是其他代码引起的不信你可以把,先把你怀疑的代码删除掉
      

  3.   

    to:zswang(伴水清清)(专家门诊清洁工)当我把
    #if DEBUG
    return;
    #endif
    这段码注释后,if(Page.Request.IsAuthenticated)这就正常 了。这是什么原因呢。难道它们不能同时存在一个方法内吗?
      

  4.   

    -_-!!!先确定DEBUG这个编译条件是否存在
    #if DEBUG
                               Zswang 路过; //看看报错不
    return;
    #endif如果上面的代码不报错(确定DEBUG不存在)
    但if(Page.Request.IsAuthenticated)又不正常
    那么我觉得这种情况,可以向微软咨询了
      

  5.   

    to:zswang(伴水清清)(专家门诊清洁工) #if DEBUG
                               Zswang 路过; //看看报错不
    return;
    #endif
    这样写后"Zswang 路过"报错:“找不到类型或命名空间”
      

  6.   

    #if DEBUG
    return;
    #endif这样得到的只是警告吧
      

  7.   

    补:在最前面,这个类没有#define Debug       的定义
      

  8.   

    在菜单->项目->xxxx 属性
    生成 定义 DEBUG 常量(&U) 选项是默认打开的(#define DEBUG)你可以把它关掉不过楼主感觉你还不会使用调试器
    自己设置个断点或者跟踪调试就能知道哪条语句抛出的错,哪条语句有没有执行
      

  9.   

    to:zswang(伴水清清)(专家门诊清洁工) 
    在菜单->项目->xxxx 属性
    生成 
    这就到了配制页了,没有定义DEBUG 常量这类东西啊,只有“配制C(活动)Debug”和“条件编译常数:DEBUG;TRACE”。
    没有:定义 DEBUG 常量(&U) 选项是默认打开的(#define DEBUG)