1

私はルートを持っています:

routes.MapRoute (name: "apicontroller2",
                 url: "api/{controller}/{action}/",
                 defaults: new { controller = "Default2", action = "Index" }
                );

および 2 つの post メソッドを持つ Default2Controller:

[HttpPost] 
public HttpResponseMessage Post(ttReview review)
{
...
}

[HttpPost] 
public HttpResponseMessage PostPro(ttbewertungenpro pro)
{
...
}

webserver/api/default2/PostPro/またはwebserver/api/default2/Post/ajax postを介してこれらの API メソッドを呼び出すと、エラーが発生します。

ExceptionMessage=Multiple actions were found that match the request: 
System.Net.Http.HttpResponseMessage Post(WT.Models.ttReview) on type WT.Controllers.Default2Controller
System.Net.Http.HttpResponseMessage PostPro(WT.Models.ttbewertungenpro) on type WT.Controllers.Default2Controller

私のajax呼び出しは次のとおりです。

$.ajax({
        url: "../api/default2/Post", // or "../api/default2/PostPro",
        type: 'POST',
        dataType: "text", 
        data: review, // or pro
        success: function (test) {
        },
        error: function (test) {
            alert("Error");
        }
}

私のルートは間違っていますか?1つのメソッドを削除すると、もう1つのメソッドが機能します...

4

2 に答える 2

2

AttributeRoutingを確認してください(http://nuget.org/packages/AttributeRouting.WebApi)

ルートをマッピングするのはとても簡単です。

[POST("Page/Method")]
public HttpResponseMessage Post(ttReview review)
{
...
}
于 2013-01-17T11:31:45.350 に答える
1

ふすまの新しい空の WebAPI プロジェクトでは、global.asax ファイルには触れていません。

ホームコントローラー

[HttpPost]
public HttpResponseMessage Post(string review)
{
    return new HttpResponseMessage(HttpStatusCode.Created);
}

[HttpPost]
public HttpResponseMessage PostPro(string pro)
{
    return new HttpResponseMessage(HttpStatusCode.Created);
}

インデックス.cshtml

<script src="~/Scripts/jquery-1.7.1.js"></script>

<script>

    $(document).ready(function () {

        $("#submit").click(function() {

            $.ajax({
                url: "home/Post", // or "../api/default2/PostPro",
                type: 'POST',
                dataType: "text",
                data: "test", // or pro
                success: function(test) {
                },
                error: function(test) {
                    alert("Error");
                }
            });

        });

    });


 </script>


<input type="submit" value="submit" id="submit" />

これは私にとってはうまくいくので、問題はパス/ルートにあるはずです。

于 2013-01-17T12:32:26.787 に答える