คำถามติดแท็ก asp.net-web-api

ASP.NET Web API เป็นเฟรมเวิร์กสำหรับสร้างบริการ HTTP สำหรับลูกค้าเช่นเบราว์เซอร์และอุปกรณ์มือถือ มันขึ้นอยู่กับ Microsoft .NET Framework และเป็นตัวเลือกที่เหมาะสำหรับการสร้างบริการ RESTful

3
การรับรองความถูกต้อง ASP.NET Web API
ฉันกำลังมองหาในการตรวจสอบผู้ใช้จากโปรแกรมประยุกต์ไคลเอ็นต์ในขณะที่ใช้เว็บ ASP.NET API ฉันได้ดูวิดีโอทั้งหมดบนไซต์และอ่านโพสต์ในฟอรัมนี้ด้วย การใส่[Authorize]แอตทริบิวต์อย่างถูกต้องจะส่งคืน401 Unauthorizedสถานะ อย่างไรก็ตามฉันต้องการทราบวิธีอนุญาตให้ผู้ใช้เข้าสู่ระบบ API ฉันต้องการให้ข้อมูลรับรองผู้ใช้จากแอปพลิเคชัน Android ไปยัง API ให้ผู้ใช้เข้าสู่ระบบจากนั้นจึงมีการตรวจสอบสิทธิ์การเรียกใช้ API ที่ตามมาทั้งหมด

14
จะอ่านเนื้อหาคำขอในตัวควบคุม webapi หลักของ asp.net ได้อย่างไร
ฉันพยายามอ่านเนื้อหาคำขอในOnActionExecutingวิธีการ แต่ฉันมักจะเข้าใจnullร่างกาย var request = context.HttpContext.Request; var stream = new StreamReader(request.Body); var body = stream.ReadToEnd(); ฉันพยายามตั้งค่าตำแหน่งสตรีมอย่างชัดเจนเป็น 0 แต่ก็ไม่ได้ผลเช่นกัน เนื่องจากนี่คือ ASP.NET Core ฉันคิดว่าสิ่งต่าง ๆ แตกต่างกันเล็กน้อย ฉันสามารถดูตัวอย่างทั้งหมดได้ที่นี่ซึ่งอ้างอิงถึง Web API เวอร์ชันเก่า มีวิธีอื่นในการทำเช่นนี้หรือไม่?


2
ส่งคืน HTML จาก ASP.NET Web API
วิธีการคืน HTML จาก ASP.NET MVC Web API controller? ฉันลองใช้โค้ดด้านล่าง แต่ได้รับข้อผิดพลาดในการคอมไพล์เนื่องจากไม่ได้กำหนด 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 เมื่อเบราว์เซอร์ยกเลิกการร้องขอ
เมื่อผู้ใช้โหลดเพจผู้ใช้จะทำการร้องขอ ajax อย่างน้อยหนึ่งรายการซึ่งเข้าสู่ตัวควบคุม ASP.NET Web API 2 หากผู้ใช้ไปยังหน้าอื่นก่อนที่คำขอ ajax เหล่านี้จะเสร็จสมบูรณ์คำขอจะถูกยกเลิกโดยเบราว์เซอร์ ELMAH HttpModule ของเราจะบันทึกข้อผิดพลาดสองข้อสำหรับแต่ละคำขอที่ถูกยกเลิก: ข้อผิดพลาด 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 …

20
เอกสาร Swagger UI Web Api นำเสนอ enums เป็นสตริงหรือไม่
มีวิธีแสดง enums ทั้งหมดเป็นค่าสตริงในรูปแบบ swagger แทนค่า int หรือไม่? ฉันต้องการส่งการกระทำ POST และใส่ enums ตามค่าสตริงโดยไม่ต้องดู enum ทุกครั้ง ฉันลองแล้วDescribeAllEnumsAsStringsแต่เซิร์ฟเวอร์ได้รับสตริงแทนค่า enum ซึ่งไม่ใช่สิ่งที่เรากำลังมองหา มีใครแก้ปัญหานี้ได้บ้าง? แก้ไข: 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) { // …

3
ฉันสามารถรวมทั้ง SignalR และ RESTful API ได้หรือไม่
ฉันมีเว็บแอปหน้าเดียวที่พัฒนาโดยใช้ ASP.NET ฉันเพิ่งแปลงวิธีการบนเว็บจำนวนมากให้เป็นแบบพุชโดยใช้ไลบรารีSignalR สิ่งนี้ทำให้หน้าเว็บเร็วขึ้นอย่างมากและลดการเรียกเซิร์ฟเวอร์จำนวนมากจากหน้าเว็บ ในเวลาเดียวกันฉันยังได้ดู RESTful ASP.NET WebAPI สำหรับวิธีการฝั่งเซิร์ฟเวอร์ด้วยความสวยงามที่แท้จริงคืออนุญาตให้สร้าง API สำหรับแอปพลิเคชันภายนอกในเวลาเดียวกันกับที่ฉันพัฒนา แอปพลิเคชันหลัก (ซึ่งจะมีความสำคัญสำหรับสิ่งที่ฉันทำ) ดูเหมือนว่าอย่างไรหลังจากที่กำลังมองหาที่หลายบทความและเหล่านี้ สองคำถามที่ผลักดันและ WebAPI วิธีดูเหมือนสองกระบวนทัศน์ที่แตกต่างกันอย่างสิ้นเชิงสำหรับการสื่อสารลูกค้าเซิร์ฟเวอร์ ฉันแน่ใจว่าฉันสามารถสร้างวิธีการต่างๆที่สามารถเข้าถึงได้ผ่านโปรโตคอลใดก็ได้ แต่ฉันไม่แน่ใจว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่หรือถือว่าเป็นเรื่องที่เลอะเทอะ - อาจมีวิธีที่หรูหรากว่าในการบรรลุสิ่งที่ฉันตั้งเป้าไว้ สำหรับ. มีหลายสถานการณ์ที่ฉันต้องการให้ RESTful WebAPI ออกอากาศเหตุการณ์ผ่านฮับ SignalR ... ตรงกันข้าม (SignalR เคยต้องการเข้าถึง WebAPI) ดูเหมือนจะมีโอกาสน้อยกว่า แต่ฉันคิดว่ายังคงเป็นไปได้ มีใครทำแบบนี้บ้าง? ใครมีคำแนะนำหรือเคล็ดลับในการดำเนินการ อะไรคือหนทางที่สง่างามที่สุดที่นี่?

4
การบันทึกข้อความร้องขอ / ตอบกลับเมื่อใช้ HttpClient
ฉันมีวิธีการโพสต์ดังต่อไปนี้ var response = await client.PostAsJsonAsync(url, entity); if (response.IsSuccessStatusCode) { // read the response as strongly typed object return await response.Content.ReadAsAsync<T>(); } คำถามของฉันคือฉันจะรับ JSON จริงที่โพสต์จากเอนทิตีอ็อบเจ็กต์ได้อย่างไร ฉันต้องการบันทึก JSON ที่ได้รับ POSTED ดังนั้นจะเป็นการดีที่จะมีโดยที่ฉันไม่ต้องทำ json ให้เป็นอนุกรมด้วยตัวเอง

4
ใช้ async / await อย่างมีประสิทธิภาพด้วย ASP.NET Web API
ฉันพยายามใช้async/awaitคุณสมบัติของ ASP.NET ในโครงการ Web API ของฉัน ฉันไม่แน่ใจมากนักว่าจะสร้างความแตกต่างในประสิทธิภาพของบริการ Web API ของฉันหรือไม่ โปรดดูขั้นตอนการทำงานและโค้ดตัวอย่างด้านล่างจากแอปพลิเคชันของฉัน ขั้นตอนการทำงาน: แอปพลิเคชัน UI →ปลายทาง Web API (ตัวควบคุม) →วิธีการโทรในชั้นบริการ Web API →เรียกใช้บริการเว็บภายนอกอื่น (ที่นี่เรามีการโต้ตอบฐานข้อมูล ฯลฯ ) ควบคุม: 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() { …

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 Internal Server เพื่อส่งกลับไปยังไคลเอนต์ฉันต้องการให้เข้าสู่ระบบ การนำไปใช้งานApplication_Errorนี้ทำได้ดีใน Web Forms และ MVC - ฉันจะใช้อะไรใน Web Api ได้บ้าง

3
การอนุญาตแบบกำหนดเองใน Asp.net WebApi - อะไรเป็นปัญหา?
ฉันกำลังอ่านจากแหล่งข้อมูลหลายแห่ง (หนังสือและคำตอบ SO) เกี่ยวกับการอนุญาตใน WebApi สมมติว่าฉันต้องการเพิ่มแอตทริบิวต์ที่กำหนดเองซึ่งอนุญาตให้เข้าถึงได้สำหรับผู้ใช้บางรายเท่านั้น: กรณีที่ # 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 …

4
เปลี่ยนเส้นทางจากการดำเนินการโพสต์เว็บ api ของเว็บ asp.net
ฉันใหม่มากกับ ASP.NET 4.0 Web API เราสามารถเปลี่ยนเส้นทางไปยัง URL อื่นเมื่อสิ้นสุดการดำเนินการ POST ได้หรือไม่เช่น ...Response.Redirect(url) อันที่จริงฉันอัปโหลดไฟล์จากแอปพลิเคชัน MVC (พูดwww.abcmvc.com) ผ่าน Web API (พูดwww.abcwebapi.com/upload) นี่uploadคือการดำเนินการโพสต์ ฉันโพสต์รูปแบบหลายส่วนไปยังการดำเนินการโพสต์ของตัวควบคุมการอัปโหลด Web API www.abcmvc.comหลังจากอัปโหลดผมอยากจะเปลี่ยนเส้นทางกลับไป เป็นไปได้หรือไม่

9
Asp Net Web API 2.1 รับที่อยู่ IP ของไคลเอ็นต์
สวัสดีฉันต้องการรับ IP ไคลเอนต์ที่ขอวิธีการบางอย่างใน web api ฉันได้พยายามใช้รหัสนี้จากที่นี่แต่จะส่งคืน 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; …

5
ดังนั้น JSONP หรือ CORS? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ WebAPI ของฉันถูกปรับใช้ในสภาพแวดล้อมอินทราเน็ต นั่นหมายความว่าการรักษาความปลอดภัยก็ไม่ได้กังวลของฉัน มันดูเหมือนว่า ธ เป็นมิตรมากขึ้นให้กับลูกค้าและง่ายต่อการใช้ มีข้อกังวลอื่นใดที่ฉันอาจพลาดไป?

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! " …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.