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

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

19
Swagger UI Web Apiドキュメント列挙型を文字列として提示しますか?
すべての列挙型を、int値ではなくswaggerで文字列値として表示する方法はありますか? 毎回列挙型を確認しなくても、POSTアクションを送信し、文字列値に従って列挙型を配置できるようにしたいと考えています。 私は試しましたDescribeAllEnumsAsStringsが、サーバーは列挙値の代わりに文字列を受け取りますが、これは私たちが探しているものではありません。 誰かがこれを解決しましたか? 編集: public class Letter { [Required] public string Content {get; set;} [Required] [EnumDataType(typeof(Priority))] public Priority Priority {get; set;} } public class LettersController : ApiController { [HttpPost] public IHttpActionResult SendLetter(Letter letter) { // Validation not passing when using DescribeEnumsAsStrings if (!ModelState.IsValid) return BadRequest("Not valid") .. } // …

9
ドット文字「。」api / people / STAFF.45287などのリクエスト用のMVC Web API 2
私が機能させようとしているURLは、http://somedomain.com/api/people/staff.33311 のスタイルの1つです(LAST.FMがサイトのようにRESTFulとWebPageのURLにあらゆる種類の記号を許可しているように)たとえば、「http://www.last.fm/artist/psy'aviah」はLAST.FMの有効なURLです)。 どのような作品には、シナリオを以下の通りです: - http://somedomain.com/api/people/ -すべての人々を返す- http://somedomain.com/api/people/staff33311 -同様に動作し、それがどのようなI」ではないでしょう次の例のように、URLに「ドット」を受け入れたい後のm- http://somedomain.com/api/people/staff.33311-これにより、 HTTP Error 404.0 - Not Found The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. 私は以下のものをセットアップしました: コントローラ「PeopleController」 public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person = _people.FirstOrDefault(p …

10
ASP.NET Web APIでModelState検証を処理する
ASP.NET Web APIを使用してモデルの検証を実現するにはどうすればよいかと思っていました。私は私のようなモデルを持っています: public class Enquiry { [Key] public int EnquiryId { get; set; } [Required] public DateTime EnquiryDate { get; set; } [Required] public string CustomerAccountNumber { get; set; } [Required] public string ContactName { get; set; } } 次に、APIコントローラーにPostアクションがあります。 public void Post(Enquiry enquiry) { enquiry.EnquiryDate = DateTime.Now; context.DaybookEnquiries.Add(enquiry); …

5
Volleyあり、HttpEntityなしのPOSTマルチパートリクエストの処理
これは実際には問題ではありませんが、必要に応じて参照できるように、ここで私の作業コードの一部を共有したいと思います。 ご存知のように、これはHttpEntityAPI22から非推奨となり、API23から完全に削除されました。現時点では、Android開発者のHttpEntityリファレンスにアクセスできなくなりました(404)。したがって、以下は、Volleyを使用し、HttpEntityを使用しないPOSTマルチパートリクエストの実際のサンプルコードです。動作し、でテストされていAsp.Net Web APIます。もちろん、コードはおそらく2つの既存のドローアブルファイルをポストする基本的なサンプルに過ぎず、すべての場合に最適なソリューションではなく、適切なチューニングも行われていません。 MultipartActivity.java: package com.example.multipartvolley; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.android.volley.NetworkResponse; import com.android.volley.Response; import com.android.volley.VolleyError; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; public class MultipartActivity extends Activity { private final Context …

14
Asp.NET Web API-405-このページへのアクセスに使用されるHTTP動詞は許可されていません-ハンドラーマッピングを設定する方法
ASP.NET Web APIを使用してRESTサービスを作成しました。HttpDeleteリクエストを送信しようとしていますが、次のエラーが発生します。 405-このページへのアクセスに使用されるHTTP動詞は許可されていません 私はソリューションに近いと思います。IISリモート管理を有効にし、ハンドラーマッピングセクションに移動して、DELETE動詞を適切な位置に追加する必要があることがわかりましたが、問題は、リスト...(このように:http : //www.somacon.com/p126.php)。 どれを編集する必要がありますか?「ExtensionUrlHandler-Integrated-4.0」など、拡張子のないものはほとんどなく、それにDELETE動詞を追加しましたが、それでも機能しません... 暗闇の中でそれを修正するためのショットだったので、別の位置を修正する必要がありますか?もしそうなら、どれですか?それとも私がすべきことは他にありますか? 同じWebサービスがローカルサービスで完全に正常に動作するため、問題はリモートIISにあると思います... ご挨拶

9
コントローラーにパラメーターのないパブリックコンストラクターエラーがあることを確認してください
追加のコンストラクターを持つように変更するまで、私はこのチュートリアルを素晴らしく機能しましたDbContext。私は現在、解決策に問題があり、これを修正するために何をすべきかわかりません。パラメータなしのコンストラクタを取得するように強制する簡単な方法はありますか、またはこれに間違ってアプローチしていますか? DbContext 2つのコンストラクター: public class DashboardDbContext : DbContext { public DashboardDbContext() : base("DefaultConnection") { } public DashboardDbContext(DbConnection dbConnection, bool owns) : base(dbConnection, owns) { } } SiteController コンストラクタ: private readonly IDashboardRepository _repo; public SiteController(IDashboardRepository repo) { _repo = repo; } リポジトリ: DashboardDbContext _context; public DashboardRepository(DashboardDbContext context) { _context = context; …

13
asp.netコアwebapiコントローラーでリクエスト本文を読み取る方法は?
OnActionExecutingメソッドでリクエストの本文を読み込もうとしていますが、常にnull本文を取得します。 var request = context.HttpContext.Request; var stream = new StreamReader(request.Body); var body = stream.ReadToEnd(); ストリーム位置を明示的に0に設定しようとしましたが、それも機能しませんでした。これはASP.NET COREなので、状況は少し違うと思います。ここでは、すべてのサンプルが古いwebapiバージョンを参照しています。 これを行う他の方法はありますか?

9
Web API 2:オブジェクトとそのサブオブジェクトで、camelCasedプロパティ名を使用してJSONを返す方法
更新 すべての回答をありがとう。私は新しいプロジェクトに参加していて、ようやくこれの最後に到達したようです。次のコードが実際に原因であるように見えます。 public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK) { return new HttpResponseMessage() { StatusCode = code, Content = response != null ? new JsonContent(response) : null }; } 他の場所... public JsonContent(object obj) { var encoded = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } ); _value …

16
「Access-Control-Allow-Origin」ヘッダーには複数の値が含まれています
クライアント側でAngularJS $ httpを使用して、サーバー側のASP.NET Web APIアプリケーションのエンドポイントにアクセスしています。クライアントはサーバーとは異なるドメインでホストされているため、CORSが必要です。$ http.post(url、data)で機能します。しかし、ユーザーを認証し、$ http.get(url)を介してリクエストを行うとすぐに、メッセージが表示されます 「Access-Control-Allow-Origin」ヘッダーには複数の値「http://127.0.0.1:9000、http://127.0.0.1:9000」が含まれていますが、許可されているのは1つだけです。したがって、Origin 'http://127.0.0.1:9000'はアクセスを許可されません。 Fiddlerは、オプション要求が成功した後、get要求に実際に2つのヘッダーエントリがあることを示しています。何がどこで間違っているのですか? 更新 $ http.getの代わりにjQuery $ .getを使用すると、同じエラーメッセージが表示されます。したがって、これはAngularJSには問題がないようです。しかし、どこが間違っているのでしょうか?


6
asp.net webapi 2リクエストとレスポンスの本文をデータベースに記録する必要がある
IISでホストされているMicrosoft Asp.net WebApi2を使用しています。非常に単純に、各投稿の要求本文(XMLまたはJSON)と応答本文をログに記録します。 このプロジェクトや投稿を処理するコントローラーについて特別なことは何もありません。必要がない限り、nLog、elmah、log4netなどのロギングフレームワーク、またはWeb APIの組み込みのトレース機能を使用することに興味はありません。 ロギングコードをどこに配置するか、および実際のJSONまたはXMLを着信および発信の要求と応答から取得する方法を知りたいだけです。 私のコントローラーの投稿方法: public HttpResponseMessage Post([FromBody])Employee employee) { if (ModelState.IsValid) { // insert employee into to the database } }

9
System.Net.HttpClientを使用して複合型を投稿する方法
Web APIを使用して操作したいカスタムの複合型があります。 public class Widget { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } そして、これが私のWeb APIコントローラメソッドです。このオブジェクトを次のように投稿したい: public class TestController : ApiController { // POST /api/test public HttpResponseMessage<Widget> Post(Widget widget) { widget.ID = 1; // hardcoded for …

5
Web APIのXmlドキュメントに、メインプロジェクト以外のドキュメントをどのように含めることができますか?
XmlDocをWeb Apiプロジェクトに統合できるようにするためのドキュメントは、すべてのAPIタイプがWebApiプロジェクトの一部である状況のみを処理するように見えます。特に、XMLドキュメントを再ルーティングして、App_Data/XmlDocument.xmlそのファイルを使用する構成内の行のコメントを外す方法について説明します。これは暗黙的に1つのプロジェクトのドキュメントファイルのみを許可します。 ただし、私のセットアップでは、リクエストとレスポンスのタイプを共通の「モデル」プロジェクトで定義しています。つまり、次のようなエンドポイントが定義されている場合、 [Route("auth/openid/login")] public async Task<AuthenticationResponse> Login(OpenIdLoginRequest request) { ... } どこにOpenIdLoginRequestそのような個別のC#プロジェクトで定義されます。 public class OpenIdLoginRequest { /// <summary> /// Represents the OpenId provider that authenticated the user. (i.e. Facebook, Google, etc.) /// </summary> [Required] public string Provider { get; set; } ... } XML doccommentsにもかかわらず、requestエンドポイント固有のヘルプページ(つまりhttp://localhost/Help/Api/POST-auth-openid-login)を表示すると、パラメーターのプロパティにはドキュメントが含まれません。 XMLドキュメントを含むサブプロジェクトの型がWeb API XMLドキュメントに表示されるようにするにはどうすればよいですか?

4
要求されたリソースはHTTPメソッド 'GET'をサポートしていません
ルートは正しく構成されており、メソッドには装飾されたタグがあります。「要求されたリソースはHTTPメソッド 'GET'をサポートしていません」というメッセージがまだ表示されますか? [System.Web.Mvc.AcceptVerbs("GET", "POST")] [System.Web.Mvc.HttpGet] public string Auth(string username, string password) { // Décoder les paramètres reçue. string decodedUsername = username.DecodeFromBase64(); string decodedPassword = password.DecodeFromBase64(); return "value"; } これが私のルートです: config.Routes.MapHttpRoute( name: "AuthentificateRoute", routeTemplate: "api/game/authentificate;{username};{password}", defaults: new { controller = "Game", action = "Auth", username = RouteParameter.Optional, password = RouteParameter.Optional }, …

4
エラー:リクエストヘッダーフィールドContent-TypeはAccess-Control-Allow-Headersでは許可されていません
vS2012を使用してmvc4 web apiプロジェクトを作成しました。以下のチュートリアルを使用して、クロスオリジンリソースシェアリングを解決しました。「http://blogs.msdn.com/b/carlosfigueira/archive/2012/07/02/cors-support-in-asp-net-web-api- rc-version.aspx」。それは正常に機能しており、クライアント側からサーバーにデータを正常にポストします。 その後、プロジェクトに認証を実装するために、次のチュートリアルを使用してOAuth2を実装しました。「http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for -mvc-two-legged-implementation.aspx」。これは、クライアント側でRequestTokenを取得するのに役立ちます。 しかし、クライアント側からデータを投稿すると、「XMLHttpRequestはhttp://を読み込めません。リクエストヘッダーフィールドのContent-TypeはAccess-Control-Allow-Headersでは許可されていません」というエラーが発生しました 。 私のクライアントサイドのようなコードを見て、 function PostLogin() { var Emp = {}; Emp.UserName = $("#txtUserName").val(); var pass = $("#txtPassword").val(); var hash = $.sha1(RequestToken + pass); $('#txtPassword').val(hash); Emp.Password= hash; Emp.RequestToken=RequestToken; var createurl = "http://localhost:54/api/Login"; $.ajax({ type: "POST", url: createurl, contentType: "application/json; charset=utf-8", data: JSON.stringify(Emp), statusCode: { 200: …

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