ここに示すコードを使用してHMAC認証を実装しようとしています。http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api-key-authentication-hmac-authentication/ASP.NET Webフォーム内でASP.NET Web APIを使用しているときに「メソッドが許可されていません」というエラーが表示される
このコードをASP.NET Webフォームアプリケーションに統合しました。私は "HMACAPI"という名前のフォルダを作成し、そこにコントローラとフィルタを追加しました。必要なすべてのNugetパッケージもインストールしました。これは私が私のサービスメソッドを実装しています方法です:
[HMACAuthentication]
[RoutePrefix("api/forms")]
public class FormsController : ApiController
{
[Route("")]
public IHttpActionResult Get()
{
ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal;
var Name = ClaimsPrincipal.Current.Identity.Name;
return Ok("test");
}
[Route("")]
public IHttpActionResult Post(string order)
{
return Ok(order);
}
}
これは、APIのための私のルート設定である:
GlobalConfiguration.Configure(APIWebFormsProject.API.WebApiConfig.Register);
しかし、私はclient.PostAsJsonAsync()
を使用する場合、それはMethod Not Allowed
エラーを示しています。私は様々なSOの質問を試みたが、彼らの答えのどれも助けにはならない。私が試した何
:
は
WebDAV
モジュールを削除しました。属性を追加する
[HttpPost]
属性を追加しました。
私はAPIにアクセスするために "http://localhost:56697/api/forms/" URLを使用しています。でも、私は "http://localhost:56697/api/forms"と "http://localhost:56697/api/forms/test"を試しました。黒曜石フェニックスによって示唆されるように
UPDATE
私は[HMACAuthentication]
属性なしでそれを実行することができました。しかし、私はこれをHMAC認証で実装したいと思っています。だから、これの理由は何か?
の代わりに 'GlobalConfiguration.Configuration.Routes.MapHttpRoute'を使う必要があります。' RouteTable.Routes.MapHttpRoute' – MethodMan
@MethodMan私はそれを試みました。まだ動かない。そして、申し訳ありませんが、間違って入力しました。 'Method Not Allowed'エラーです。 –
ちょうどチェック、あなたは 'config.MapHttpAttributeRoutes();'あなたのルート設定の一部としてここでは 'config'はWebApiConfigの 'HttpConfiguration'です – singsuyash