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

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

9
จะใช้ System.Net.HttpClient เพื่อโพสต์ประเภทที่ซับซ้อนได้อย่างไร
ฉันมีประเภทที่ซับซ้อนที่กำหนดเองซึ่งฉันต้องการใช้งานโดยใช้ Web API public class Widget { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } และนี่คือวิธีควบคุม API เว็บของฉัน ฉันต้องการโพสต์วัตถุนี้ดังนี้: public class TestController : ApiController { // POST /api/test public HttpResponseMessage<Widget> Post(Widget widget) { widget.ID = 1; …

13
ไม่พบ Request.GetOwinContext
ฉันค้นหามาเป็นชั่วโมงแล้วโดยพยายามหาสาเหตุว่าทำไมจึงไม่ได้ผล ฉันมีแอปพลิเคชัน ASP.Net MVC 5 พร้อม WebAPI ฉันกำลังพยายามขอ Request.GetOwinContext () การตรวจสอบสิทธิ์ แต่ดูเหมือนจะไม่พบวิธีรวม GetOwinContext นี่คือรหัสของฉัน: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Mvc; using System.Web.Security; using TaskPro.Models; namespace TaskPro.Controllers.api { public class AccountController : ApiController { [HttpPost] [AllowAnonymous] public ReturnStatus Login(LoginViewModel model) { if (ModelState.IsValid) …
101 c#  asp.net-web-api  owin 

6
จะส่งคืนไฟล์โดยใช้ Web API ได้อย่างไร
ฉันใช้เว็บ ASP.NET API ฉันต้องการดาวน์โหลด PDF ด้วย C # จาก API (ที่ API สร้างขึ้น) ฉันขอ API ส่งคืนได้byte[]ไหม และสำหรับแอปพลิเคชัน C # ฉันสามารถทำได้: byte[] pdf = client.DownloadData("urlToAPI");? และ File.WriteAllBytes()?

6
'System.Net.Http.HttpContent' ไม่มีคำจำกัดความสำหรับ 'ReadAsAsync' และไม่มีวิธีการขยาย
ฉันสร้างแอปคอนโซลเพื่อใช้ Web API ที่เพิ่งสร้างขึ้น โค้ดแอปคอนโซลไม่คอมไพล์ มันทำให้ฉันมีข้อผิดพลาดในการคอมไพล์: 'System.Net.Http.HttpContent' does not contain a definition for 'ReadAsAsync' and no extension method 'ReadAsAsync' accepting a first argument of type 'System.Net.Http.HttpContent' could be found (are you missing a using directive or an assembly reference?) นี่คือวิธีทดสอบที่เกิดข้อผิดพลาดนี้ static IEnumerable<Foo> GetAllFoos() { using (HttpClient client = new HttpClient()) …

5
ระงับคุณสมบัติที่มีค่า null บน ASP.NET Web API
ฉันได้สร้างโครงการ ASP.Net WEB API ที่แอปพลิเคชันมือถือจะใช้ ฉันต้อง JSON การตอบสนองต่องดคุณสมบัติ null property: nullแทนการผลตอบแทนที่พวกเขาเป็น ฉันจะทำเช่นนี้ได้อย่างไร?

10
ฉันจะส่งคืน NotFound () IHttpActionResult พร้อมข้อความแสดงข้อผิดพลาดหรือข้อยกเว้นได้อย่างไร
ฉันกำลังส่งคืน NotFound IHttpActionResultเมื่อไม่พบบางสิ่งในการดำเนินการ WebApi GET ของฉัน พร้อมกับการตอบกลับนี้ฉันต้องการส่งข้อความที่กำหนดเองและ / หรือข้อความยกเว้น (ถ้ามี) ปัจจุบันApiController's NotFound()วิธีการไม่ให้เกินที่จะผ่านข้อความ มีวิธีใดบ้างในการทำเช่นนี้? หรือฉันจะต้องเขียนเองIHttpActionResult?

4
จะเพิ่มฟิลเตอร์ Global ASP.Net Web Api ได้อย่างไร?
ฉันได้สร้างตัวกรอง Web Api (โดยใช้System.Web.Http.Filters.ActionFilterAttribute) แต่ฉันไม่สามารถทำให้มันใช้งานได้ภายใน ASP.Net MVC 4 ฉันพยายามเพิ่มมันลงในRegisterGlobalFilters()วิธีการ แต่ไม่ได้ผล ดังนั้นหากใครใช้ Web Api ที่โฮสต์ใน ASP.Net MVC หนึ่งจะลงทะเบียนตัวกรองได้อย่างไร

22
Entity Framework Core: การดำเนินการที่สองเริ่มต้นในบริบทนี้ก่อนที่การดำเนินการก่อนหน้านี้จะเสร็จสมบูรณ์
ฉันกำลังทำงานในโครงการ ASP.Net Core 2.0 โดยใช้ Entity Framework Core <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" PrivateAssets="All" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0"/> และในวิธีการรายการของฉันฉันได้รับข้อผิดพลาดนี้: InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe. Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection() นี่คือวิธีการของฉัน: [HttpGet("{currentPage}/{pageSize}/")] [HttpGet("{currentPage}/{pageSize}/{search}")] public ListResponseVM<ClientVM> …

8
รับผู้ใช้ปัจจุบันภายในแอ็คชัน ApiController โดยไม่ต้องส่ง userID เป็นพารามิเตอร์
เราจะรับผู้ใช้ปัจจุบันภายในแอ็คชัน ApiController ที่ปลอดภัยได้อย่างไรโดยไม่ส่ง userName หรือ userId เป็นพารามิเตอร์ เราถือว่าสิ่งนี้พร้อมใช้งานเนื่องจากเราอยู่ในการดำเนินการที่ปลอดภัย การดำเนินการอย่างปลอดภัยหมายความว่าผู้ใช้ได้ตรวจสอบสิทธิ์แล้วและคำขอมีโทเค็นผู้ถือ เนื่องจาก WebApi ได้ให้สิทธิ์ผู้ใช้อาจมีวิธีการเข้าถึง userId ในตัวโดยไม่ต้องส่งผ่านเป็นพารามิเตอร์การดำเนินการ

30
ไม่พบหน้า HTTP 404 ใน Web Api ที่โฮสต์ใน IIS 7.5
ฉันมีแอปพลิเคชัน Web Api มันทำงานได้ดีอย่างสมบูรณ์เมื่อฉันทดสอบโดยใช้เซิร์ฟเวอร์ dev debugging VS 2010 แต่ตอนนี้ฉันปรับใช้กับ IIS 7.5 แล้วและฉันได้รับข้อผิดพลาด HTTP 404 เมื่อพยายามเข้าถึงแอปพลิเคชัน นี่คือ web.config ของฉัน <?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="true" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add …

14
จะอัพเดตการอ้างสิทธิ์ใน ASP.NET Identity ได้อย่างไร?
ฉันใช้การตรวจสอบสิทธิ์ OWIN สำหรับโครงการ MVC5 ของฉัน นี่เป็นของฉันSignInAsync private async Task SignInAsync(ApplicationUser user, bool isPersistent) { var AccountNo = "101"; AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); identity.AddClaim(new Claim(ClaimTypes.UserData, AccountNo)); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent, RedirectUri="Account/Index"}, identity); } อย่างที่คุณเห็นฉันได้เพิ่มAccountNoเข้าไปในรายการการอ้างสิทธิ์ ตอนนี้ฉันจะอัปเดตการอ้างสิทธิ์นี้ในแอปพลิเคชันของฉันได้อย่างไร จนถึงตอนนี้ฉันมีสิ่งนี้: public string AccountNo { get { var CP = ClaimsPrincipal.Current.Identities.First(); …

5
การกำหนดเส้นทาง Web API - api / {controller} / {action} / {id}“ dysfunctions” api / {controller} / {id}
ฉันมีเส้นทางเริ่มต้นใน Global.asax: RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); ฉันต้องการกำหนดเป้าหมายฟังก์ชันเฉพาะดังนั้นฉันจึงสร้างเส้นทางอื่น: RouteTable.Routes.MapHttpRoute( name: "WithActionApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); ดังนั้นในคอนโทรลเลอร์ของฉันฉันมี: public string Get(int id) { return "object of id id"; } [HttpGet] public IEnumerable<string> ByCategoryId(int id) { return new string[] …

3
ฉันจะตั้งค่าการหมดเวลาการร้องขอสำหรับการดำเนินการของคอนโทรลเลอร์หนึ่งตัวในแอปพลิเคชัน mvc ของ asp.net ได้อย่างไร
ฉันต้องการเพิ่มระยะหมดเวลาของคำขอสำหรับการดำเนินการของคอนโทรลเลอร์เฉพาะในแอปพลิเคชันของฉัน ฉันรู้ว่าฉันสามารถทำได้ใน web.config สำหรับแอปพลิเคชันทั้งหมด แต่ฉันอยากจะเปลี่ยนแค่การกระทำเดียวนี้ ตัวอย่าง Web.config: <system.web> <httpRuntime executionTimeout="1000" /> </system.web> ฉันต้องทำอย่างไร?

4
WCF กับ ASP .Net Web API
ข้อดีข้อเสียของการใช้แต่ละเทคโนโลยีคืออะไร? ขณะนี้ WCF Web Api ได้รวมเข้ากับ Asp.net Asp.net web api รองรับการโฮสต์ด้วยตนเองแล้ว ฉันยังคงจินตนาการว่าหากฉันต้องการเปิดเผยสกีมาโปรโตคอลหลายตัวสำหรับการดำเนินการเดียวกันฉันจะยังคงเอนเอียงไปที่ WCF หรือจุดสิ้นสุด Mvc สามารถทำเช่นนี้ได้หรือไม่ API เว็บ Asp.Net ใหม่ยังแสดง Wsdl หรือไม่ หากไม่ลูกค้าจะทราบได้อย่างไรว่ามีการดำเนินการใดบ้าง คุณสมบัติที่ดีที่สุดของ Mvc คือ modelbinder ประสิทธิภาพเทียบเท่า WCF แค่ไหน? มีใครช่วยบอกหน่อยได้ไหมว่า api เว็บ Asp.net นำมาสู่ตารางได้เปรียบอย่างไร WCF ดูเหมือนจะเป็นทางเลือกที่ทรงพลัง / ปรับขนาดได้มากกว่า imo เกี่ยวกับสิ่งเดียวที่ Mvc Web Api มีเหนือรูปแบบ WCF อาจเป็นเรื่องง่ายในการพัฒนา แต่นั่นหมายถึงการหมอบหากมันเป็นข้อ จำกัด ในการออกแบบที่ร้ายแรง

11
ASP.NET Web Api: ทรัพยากรที่ร้องขอไม่รองรับเมธอด http 'GET'
ฉันมีการดำเนินการต่อไปนี้ใน ApiController: public string Something() { return "value"; } และฉันได้กำหนดเส้นทางของฉันดังนี้: routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); ในรุ่นเบต้าสิ่งนี้ใช้ได้ดี แต่ฉันเพิ่งอัปเดตเป็นผู้สมัครรุ่นล่าสุดและตอนนี้ฉันพบข้อผิดพลาดในการโทรเช่นนี้: ทรัพยากรที่ร้องขอไม่รองรับเมธอด http "GET" ทำไมไม่ทำงานอีกต่อไป? (ฉันคิดว่าฉันสามารถกำจัด {action} และสร้างตัวควบคุมจำนวนมากได้ แต่มันรู้สึกยุ่งเหยิง)

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