2015-06-20 57 views
1

我發現這個article在asp.net學習網站。我使用這篇文章來幫助我創建一個通過電子郵件搜索數據庫而不是id的API方法。Asp.net的Web API按行動路由名稱修復

不過,如果你看看這篇文章,你將能夠幫助我解決我的問題如下:

我的控制器:

[HttpGet] 
public string Details(string email); 

[HttpGet] 
[ActionName("Email")] 
public HttpResponseMessage GetEmail(string email); 

我WebApiConfig類

config.Routes.MapHttpRoute(
      name: "EmailApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
      ); 

首先,我得到的詳細方法的錯誤如下:

(錯誤1 'MyApp.Controllers.UsersController.Details(字符串)',因爲它未標記抽象的,必須的extern 聲明主體,或 部分d:\ Abdulrhman AA \ MyApp的\ Asp.net的Web API \控制器\ UsersController.cs 40 27 MyAppApplication)

其次,我得到爲GetEmail方法如下錯誤:

(錯誤2 'MyApp.Controllers.UsersController.GetEmail(字符串)' 必須 聲明一個身體,因爲它沒有被標記爲抽象的,extern或 partial d:\ Abdulrhman A A \ MyApp的\ Asp.net的Web API \控制器\ UsersController.cs 44 43 MyAppApplication)

回答

1

本文提供關於如何配置路由的樣品。最後兩個樣本僅用於說明目的,它更像是僞代碼,而不是工作代碼。如果您剛剛開始使用C#,那麼最後的代碼示例會令人困惑。

您所得到的錯誤清楚地描述了發生了什麼 - 您需要一個方法體。爲了解決這個問題,而不是在末尾添加;添加{}和實際實現方法:

[HttpGet] 
public string Details(string email) 
{ 
    // Implement your method, so it returns string 
} 

[HttpGet] 
[ActionName("Email")] 
public HttpResponseMessage GetEmail(string email) 
{ 
    // Implement your method so it returns HttpResponseMessage 
} 
+0

好消息,你證實了我的建議。我現在正在研究如何通過電子郵件搜索而不是通過id來形成方法體。但我仍然在掙扎,你可以用方法體來編輯你的文章嗎? – Diamond

+0

@AbuTaha與你最初的問題完全無關。而不是在評論中詢問後續問題(哪裏沒有人可能會看到它),最好問一個新問題,清楚地描述你想要達到什麼和什麼不工作。請參閱[如何提出一個好問題的指導原則](http://stackoverflow.com/help/how-to-ask) – dotnetom

+0

謝謝@dotnetom。我將發佈另一個問題。 – Diamond