2012-04-23 107 views
1

當我嘗試使用此方法返回學生時,它不顯示任何內容或任何錯誤,但是如果我不在密碼框中輸入任何內容,則會出現404錯誤,因此我知道它的工作方式,所以我的身份驗證方法不符合'工作,我基本上想要驗證用戶並從學生集合中返回一些東西,比如名字?認證後沒有返回?

private void button20_Click(object sender, EventArgs e) 
{ 
    string uri = string.Format("http://localhost:8000/Service/AuthenticateStudent/{0}/{1}", textBox28.Text, textBox29.Text); 
    XDocument xDoc = XDocument.Load(uri); 
    var Tag12 = xDoc.Descendants("Student") 
     .Select(n => new 
     { 
      FirstName = n.Element("FirstName").Value, 
     }) 
     .ToList(); 


    dataGridView12.DataSource = Tag12; 
} 
+0

您是否在客戶端添加了對WCf的Web引用? – 2012-04-23 01:45:49

回答

1

你要創建一個包含您當前正在返回布爾,以及學生一個特殊的返回類型:

public class AuthenticationResult 
{ 
    public bool IsValid {get;set;} 
    public Student ValidatedStudent {get;set;} 
} 

然後從WCF返回此類型的對象方法:

public AuthenticationResult AuthenticateStudent(string studentID, string password) 
{ 
    var result = students.FirstOrDefault(n => n.StudentID == studentID); 
    bool flag = false; 
    if (result != null) {...} 

    ... 
    return new AuthenticationResult {IsValid = flag, ValidatedStudent = result}; 
} 
+0

+1謝謝,那麼我的實際身份驗證方法,我仍然堅持'flag = UserPassword.ToList()。SequenceEqual(StudentFound.Salt);'它應該是studentfound.Password從我的datacontract學生,但如果我設置它到我在整個線路上出現錯誤,說你不能將列表轉換爲'iqueryable ' – 2012-04-23 02:58:54

+0

仍然無法將此工作到 – 2012-04-23 05:31:01

+0

@KirstyWhite:您已通過此貼發送了多個問題。嘗試用密碼檢查縮小問題的範圍,並將其作爲單獨的問題提出。 – StriplingWarrior 2012-04-23 15:12:20