19

JavaScript によって消費される JSON を返すコントローラーが必要なので、ApiControllerクラスから継承しましたが、期待どおりに動作しません。Apress book Pro ASP.NET MVC 4 と私が見つけたオンラインの例のほとんどは、次のような例を示しています。

public class ServicesController : ApiController
{
    public string[] MethodFruit()
    {
        return new string[] { "Apple", "Orange", "Banana" };
}

次の URL からアクセスします。

http://mysite/services/methodfruit

しかし、それは決して機能しません - リソースが見つかりません。私が機能させることができる唯一のアプローチは、コントローラーにHTTP動詞ごとに異なるメソッドを含めることです。次に、次のようにします。

http://mysite/api/services

GET メソッドを呼び出します。

Apress の Web サイトを確認しましたが、フォーラムがないようで、現在のソース コードは私が使用していない VS 2012 にあります。ソース ファイルを調べたところ、前者のアプローチが機能するはずだと考えているようです。以前のアプローチはサポートされなくなりましたか?

4

4 に答える 4

8

ルーティング時に Web API がアクション名を検索するようにするには、App_Start フォルダーの WebApiConfig.cs クラスを次のように変更します。

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

次に、GETリクエストを行うだけです

http://mysite/api/Services/MethodFruit
于 2013-09-06T16:14:24.947 に答える
0

私は同じ問題に直面していました、私は自分のコードでそれを見つけました

using System.Web.Mvc; 

System.Web.Http を使用する代わりに Mvc をインポートしました。そのため、webApi ルートではなく Mvc ルーティングを使用していました。私はそれを

using System.Web.Http 

そしてそれは私のために働きます。初心者が同じ間違いを繰り返さないように、回答を追加しています

于 2018-01-11T07:21:11.993 に答える