タグ付けされた質問 「asp.net-web-api」

ASP.NET Web APIは、ブラウザーやモバイルデバイスなどのクライアント用のHTTPサービスを構築するためのフレームワークです。これは、Microsoft .NET Frameworkに基づいており、RESTfulサービスを構築するための理想的な選択肢です。

3
ASP.NET Web API認証
ASP.NET Web APIを使用しながら、クライアントアプリケーションからユーザーを認証しようとしています。私はサイトのすべてのビデオを見て、このフォーラムの投稿も読んだ。 置く[Authorize]属性が正しく返す401 Unauthorized状況を。ただし、ユーザーがAPIにログインできるようにする方法を知る必要があります。 AndroidアプリケーションからAPIにユーザー認証情報を提供し、ユーザーをログインさせて、その後のすべてのAPI呼び出しを事前認証したいと思います。


2
ASP.NET Web APIからHTMLを返す
ASP.NET MVC Web APIコントローラーからHTMLを返す方法は? 以下のコードを試しましたが、Response.Writeが定義されていないため、コンパイルエラーが発生しました。 public class MyController : ApiController { [HttpPost] public HttpResponseMessage Post() { Response.Write("<p>Test</p>"); return Request.CreateResponse(HttpStatusCode.OK); } }

7
ブラウザーがリクエストをキャンセルしたときのASP.NET Web API OperationCanceledException
ユーザーがページを読み込むと、ASP.NET Web API 2コントローラーにヒットする1つまたは複数のajax要求が行われます。ユーザーが別のページに移動した場合、これらのajaxリクエストが完了する前に、リクエストはブラウザーによってキャンセルされます。次に、ELMAH HttpModuleは、キャンセルされたリクエストごとに2つのエラーをログに記録します。 エラー1: System.Threading.Tasks.TaskCanceledException: A task was canceled. at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack …

3
SignalRとRESTful APIの両方を組み込むことはできますか?
ASP.NETを使用して開発された単一ページのWebアプリがあります。最近、SignalRライブラリを使用して、多くのWebメソッドをプッシュベースに変換しました。これにより、ページが大幅に高速化され、ページからのサーバー呼び出しの多くが削減されました。 同時に、サーバー側のメソッドの一部についてRESTful ASP.NET WebAPIも検討してきました。本当の美しさは、外部アプリケーション用のAPIを開発と同時に作成できることです。コアアプリケーション(これは私がやっていることにとって重要です)。 ただし、いくつかの記事とこれら 2つの質問を見てみると、pushメソッドとWebAPIメソッドは、クライアント/サーバー通信の2つのまったく異なるパラダイムのように見えます。私はどちらのプロトコルでもアクセスできるさまざまなメソッドを作成できると確信していますが、これに落とし穴があるのか​​、これがずさんだと見なされているのかは不明です-おそらく私が目指していることを達成するためのよりエレガントな方法があるでしょうために。 RESTful WebAPIがSignalRハブを介してイベントをブロードキャストする必要がある状況は確かにあります...反対(SignalRはWebAPIにアクセスする必要がある)とは思われませんが、それでも可能だと思います。 誰かこれをやったことがありますか?誰かがどのように進めるかについてアドバイスやヒントを持っていますか?ここで最もエレガントな方法は何でしょうか?

4
ASP.NET Web APIでasync / awaitを効果的に使用する
async/await私のWeb APIプロジェクトでASP.NET の機能を利用しようとしています。それが私のWeb APIサービスのパフォーマンスに影響を与えるかどうかは、私にはよくわかりません。アプリケーションのワークフローとサンプルコードを以下に示します。 ワークフロー: UIアプリケーション→Web APIエンドポイント(コントローラー)→Web APIサービスレイヤーのメソッドの呼び出し→別の外部Webサービスを呼び出します。(ここに、DBインタラクションなどがあります。) コントローラ: public async Task<IHttpActionResult> GetCountries() { var allCountrys = await CountryDataService.ReturnAllCountries(); if (allCountrys.Success) { return Ok(allCountrys.Domain); } return InternalServerError(); } サービス層: public Task<BackOfficeResponse<List<Country>>> ReturnAllCountries() { var response = _service.Process<List<Country>>(BackOfficeEndpoint.CountryEndpoint, "returnCountries"); return Task.FromResult(response); } 上記のコードをテストし、動作しています。しかし、それがの正しい使い方かどうかはわかりませんasync/await。あなたの考えを共有してください。

4
HttpClient使用時のリクエスト/レスポンスメッセージのロギング
以下のようなPOSTを行うメソッドがあります var response = await client.PostAsJsonAsync(url, entity); if (response.IsSuccessStatusCode) { // read the response as strongly typed object return await response.Content.ReadAsAsync<T>(); } 私の質問は、エンティティオブジェクトから投稿された実際のJSONを取得する方法です。POSTEDを取得したJSONをログに記録したいので、jsonを自分でシリアル化しなくてもそれを取得できると便利です。

5
ASP.NET Web APIですべての未処理の例外をキャッチする
ログに記録できるように、ASP.NET Web APIで発生するすべての未処理の例外をキャッチするにはどうすればよいですか? これまでのところ、私は試しました: を作成して登録する ExceptionHandlingAttribute にApplication_Errorメソッドを実装するGlobal.asax.cs 申し込む AppDomain.CurrentDomain.UnhandledException 申し込む TaskScheduler.UnobservedTaskException は、ExceptionHandlingAttributeコントローラーアクションメソッドおよびアクションフィルター内でスローされた例外を正常に処理しますが、他の例外は処理されません。次に例を示します。 IQueryableアクションメソッドによって返されたが実行に失敗したときにスローされる例外 メッセージハンドラによってスローされた例外(つまりHttpConfiguration.MessageHandlers) コントローラーインスタンスの作成時にスローされる例外 基本的に、例外によって500内部サーバーエラーがクライアントに返される場合は、ログに記録します。Application_Errorこの実装はWebフォームとMVCでうまく機能しました-Web APIで何を使用できますか?

3
Asp.net WebApiのカスタム認証-混乱
WebApiでの承認に関するいくつかのリソース(本とSOの回答)を読んでいます。 特定のユーザーのみにアクセスを許可するカスタム属性を追加したいとします。 ケース#1 私は、オーバーライドの このアプローチを見てきました OnAuthorization。これは、何かが間違っている場合に応答を設定します public class AllowOnlyCertainUsers : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { if ( /*check if user OK or not*/) { actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized); } } } ケース#2 しかし、私もこの同様の例を見たことがあります。これもオーバーライドします OnAuthorizationが、を呼び出すことでbase: public override void OnAuthorization(HttpActionContext actionContext) { base.OnAuthorization(actionContext); // If not authorized at all, …

9
Asp Net Web API 2.1はクライアントIPアドレスを取得します
こんにちは、Web APIのいくつかのメソッドを要求するクライアントIPを取得する必要があります。ここからこのコードを使用しようとしましたが、常にサーバーローカルIPを返します。正しい方法で取得するにはどうすればよいですか。 HttpContext.Current.Request.UserHostAddress; 他の質問から: public static class HttpRequestMessageExtensions { private const string HttpContext = "MS_HttpContext"; private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty"; public static string GetClientIpAddress(this HttpRequestMessage request) { if (request.Properties.ContainsKey(HttpContext)) { dynamic ctx = request.Properties[HttpContext]; if (ctx != null) { return ctx.Request.UserHostAddress; } } if (request.Properties.ContainsKey(RemoteEndpointMessage)) { dynamic remoteEndpoint = …

4
asp.net web api post actionからリダイレクト
ASP.NET 4.0 Web APIは初めてです。POSTアクションの最後に別のURLにリダイレクトできますか?Response.Redirect(url) 実際には、MVCアプリケーションから(たとえばwww.abcmvc.com)Web API(たとえばwww.abcwebapi.com/upload)を介してファイルをアップロードします これuploadがPOSTアクションです。マルチパートフォームをWeb APIアップロードコントローラーの投稿アクションに投稿します。アップロードした後、にリダイレクトしたいと思いwww.abcmvc.comます。 これは可能ですか?

5
JSONPかCORSか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 私のWebAPIはイントラネット環境にデプロイされました。つまり、セキュリティは私の関心事ではありませんでした。 CORSはクライアントにとってより親しみやすく、実装しやすいようです。 私が見逃したかもしれない他の懸念はありますか?

8
ASP.NET Web APIのカスタムメソッド名
WCF Web APIから新しいASP.NET MVC 4 Web APIに変換しています。UsersControllerがあり、Authenticateという名前のメソッドが必要です。GetAll、GetOne、Post、およびDeleteの方法の例が表示されますが、これらのサービスにメソッドを追加したい場合はどうなりますか?たとえば、UsersServiceには、ユーザー名とパスワードを渡すAuthenticateというメソッドが必要ですが、機能しません。 public class UsersController : BaseApiController { public string GetAll() { return "getall!"; } public string Get(int id) { return "get 1! " + id; } public User GetAuthenticate(string userName, string password, string applicationName) { LogWriter.Write(String.Format("Received authenticate request for username {0} and password {1} …

2
同期操作の代わりに非同期WebAPI操作を作成する必要があるのはなぜですか?
作成したWeb APIに次の操作があります。 // GET api/<controller> [HttpGet] [Route("pharmacies/{pharmacyId}/page/{page}/{filter?}")] public CartTotalsDTO GetProductsWithHistory(Guid pharmacyId, int page, string filter = null ,[FromUri] bool refresh = false) { return delegateHelper.GetProductsWithHistory(CustomerContext.Current.GetContactById(pharmacyId), refresh); } このWebサービスの呼び出しは、次の方法でJquery Ajax呼び出しを介して行われます。 $.ajax({ url: "/api/products/pharmacies/<%# Farmacia.PrimaryKeyId.Value.ToString() %>/page/" + vm.currentPage() + "/" + filter, type: "GET", dataType: "json", success: function (result) { vm.items([]); var …

27
Jsonを使用したWeb APIでの応答のシリアル化に失敗しました
ASP.NET MVC 5 Web APIを使用しています。すべてのユーザーに相談したい。 私が書いてapi/usersこれを受け取りました: 「 'ObjectContent`1'タイプは、コンテンツタイプ 'application / json; charset = utf-8'の応答本文のシリアル化に失敗しました」 WebApiConfigで、すでに次の行を追加しました: HttpConfiguration config = new HttpConfiguration(); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; しかし、それでも機能しません。 データを返すための私の関数はこれです: public IEnumerable<User> GetAll() { using (Database db = new Database()) { return db.Users.ToList(); } }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.