并非所有代码路径都在Active Directory检查上返回值

时间:2013-09-30 16:42:44

标签: c# asp.net active-directory session-variables session-cookies

我正在使用旧的系统将代码从VB转换为C#,该系统使用Web表单的基类来继承类。我希望为我们的新外联网建立一个新的登录,其功能类似于旧系统,我可能错过了一步,但这里是我试图转换的块。

public bool CheckAD()
    {
        string fncADStatus = "Failure";
        string fncSuccess = "Success";
        string fncFailure = "Failure";
        fncADStatus = Convert.ToString(Session["SessionADStatus"]);
        try
        {
            if (fncADStatus == fncSuccess)
            {
                return true;
            }
        }
        catch
        {
            if (fncADStatus == fncFailure)
            {
                return false;
            }
            if (Session["SessionADStatus"] == null)
            {
                return false;
            }
        }
    }

我收到以下错误“并非所有代码路径返回值”但我不太明白为什么。

2 个答案:

答案 0 :(得分:1)

并非catch块中的所有代码路径都返回结果。通常,你会写这样的东西

public bool CheckAD()
{   
    try {...}
    catch
    {
        if (fncADStatus == fncFailure)
        {
            logger.Debug("One");
        }
        if (Session["SessionADStatus"] == null)
        {
            logger.Debug("Two");
        }

        return false; // <<<<< This bit is missing in your case
    }
}

答案 1 :(得分:1)

  

它会给你错误,因为你没有提到其他的声明;如果条件落入其他地方,将不会返回任何内容做以下事情不会给你错误。

public bool CheckAD()    { 
        string fncADStatus = "Failure";
        string fncSuccess = "Success";
        string fncFailure = "Failure";
        fncADStatus = Convert.ToString(Session["SessionADStatus"]);
        try
        {
            Boolean output = false;
            if (fncADStatus == fncSuccess)
            {
                output = true;
            }
            return output;
        }
        catch
        {
            Boolean output = true;
            if (fncADStatus == fncFailure)
            {
                output = false;
            }
            if (Session["SessionADStatus"] == null)
            {
                output = false;
            }
            return output;
        }
    }