1

MVCのデフォルトメンバーシップからユーザーを削除しようとしていますが、渡されるパラメーターは常にnullです。[HttpDelete]属性を使用しまし[FromBody]たが、「500サーバー内部エラー」が発生します。以下は私のコードです

    // Delete api/Del/user name

    public HttpResponseMessage DeleteUser(string user)
    {

        try
        {
            System.Web.Security.Membership.DeleteUser(user);
        }
        catch (Exception)
        {

            return Request.CreateResponse(HttpStatusCode.NotFound);
        }


        return Request.CreateResponse(HttpStatusCode.OK);
    }

これは、「Delete」動詞を使用した私の呼び出しメソッドです。

http://localhost:3325/api/Del/haris2

ルーティング用にこのwebapiクラスを作成しました。同じコントローラーに引数のないGetメソッドがあります。その動作は問題ありません。

WebApiConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;

namespace DatabaseService_WebAPI.App_Start
{
    public class WebApiConfig
    {
        public static void Configure(HttpConfiguration config)
        {
            // Filters
            config.Filters.Add(new QueryableAttribute());


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

        }
    }
}
4

1 に答える 1

2

問題は、MVCがパラメーターを名前でマップすることです。したがって、問題を解決するには2つの方法があります

  1. アクションパラメータの名前を、idマップされたパスが期待する名前に変更します。例:

    public ActionResult DeleteUser(string id)
    {
        ...
    }
    
  2. userルートを更新して、IDではなくパラメータを探します。

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{user}",
        defaults: new { user = RouteParameter.Optional }
    );
    
于 2012-11-09T12:20:26.283 に答える