2014-01-23 22 views
0

進入到這個瀏覽器:爲什麼一些REST方法在其他幾乎完全相同的工作中失敗?

http://localhost:28642/api/SQLServerPOC/GetByStateOrProvince/California 

我得到的,「沒有HTTP資源發現,請求URI‘http://localhost:28642/api/SQLServerPOC/GetByStateOrProvince/California相匹配。」

然而,其他REST方法非常相似,做工精細。這是我的意思。這裏的接口:

public interface ISQLServerPOCRepository 
{ 
    int GetCount(); 
    SQLServerPOC GetByCustomerId(int ID); 
    SQLServerPOC GetByFullName(string FName, string MName, string LName); 
    IEnumerable<SQLServerPOC> GetByLastName(string LName); 
    IEnumerable<SQLServerPOC> GetByCountry(string CountryName); 
    IEnumerable<SQLServerPOC> GetByStateOrProvince(string StateOrProvince); 
    IEnumerable<SQLServerPOC> GetByPostalCode(string PostalCode); 
    IEnumerable<SQLServerPOC> GetAll(); 
    SQLServerPOC Add(SQLServerPOC item); 
} 

所有這些方法的工作,但二:GetByStateOrProvince()GetByFullName()

這裏是他們是如何出現在控制器和存儲庫(工作和非工作證明顯示沒有根本的差異):

控制器 - 前兩個工作,最後兩個別:

[Route("api/SQLServerPOC/GetByLastName/{LName}")] 
public IEnumerable<SQLServerPOC> GetSQLServerPOCByLastName(string LName) 
{ 
    return _SQLServerPOCRepository.GetByLastName(LName); 
} 

[Route("api/SQLServerPOC/GetByZip/{PostalCode}")] 
public IEnumerable<SQLServerPOC> GetSQLServerPOCByPostalCode(string PostalCode) 
{ 
    return _SQLServerPOCRepository.GetByPostalCode(PostalCode); 
} 

[Route("api/SQLServerPOC/GetByFullName/{FName}/{MName}/{LName}")] 
public SQLServerPOC GetSQLServerPOCByFullName(string FName, string MName, string LName) 
{ 
    return _SQLServerPOCRepository.GetByFullName(FName, MName, LName); 
} 

[Route("api/SQLServerPOC/GetByStateOrProvince/{StateOrProvince}")] 
public IEnumerable<SQLServerPOC> GetSQLServerPOCByStateOrProvince(string StateOrProv) 
{ 
    return _SQLServerPOCRepository.GetByStateOrProvince(StateOrProv); 
} 

public IEnumerable<SQLServerPOC> GetByLastName(string LName) 
{ 
    return customerData.Where(c => c.LastName == LName); 
} 

public IEnumerable<SQLServerPOC> GetByPostalCode(string PostalCode) 
{ 
    return customerData.Where(c => c.PostalCode == PostalCode); 
} 

public SQLServerPOC GetByFullName(string FName, string MName, string LName) 
{ 
    return 
     customerData.Where(f => f.FirstName == FName) 
      .Where(m => m.MiddleName == MName).FirstOrDefault(l => l.LastName == LName); 
} 

public IEnumerable<SQLServerPOC> GetByStateOrProvince(string StateOrProvince) 
{ 
    return customerData.Where(c => c.StateProvince == StateOrProvince); 
} 

注意:對於 「GetByFullName()」 我輸入:

http://localhost:28642/api/SQLServerPOC/GetByFullName/Catherine/R./Abel  

...但是從瀏覽器中犯錯是不同的,即:

資源無法找到。 描述:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。 請求的URL:/api/SQLServerPOC/GetByFullName/Catherine/R./Abel

+1

我想嘗試的第一件事就是將StateOrProv重命名爲StateOrProvince,我有一種感覺,那些需要匹配 –

+0

讓它成爲答案,我將它標記爲 - 它的工作原理! –

回答

2

第一件事,我會嘗試將StateOrProv重命名爲StateOrProvince,我有一種感覺,那些需要匹配。

相關問題