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

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

2
เหตุใดฉันจึงควรสร้างการดำเนินการ async 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); } การเรียกใช้บริการเว็บนี้ทำผ่าน Jquery Ajax เรียกวิธีนี้: $.ajax({ url: "/api/products/pharmacies/<%# Farmacia.PrimaryKeyId.Value.ToString() %>/page/" + vm.currentPage() + "/" + filter, type: "GET", dataType: "json", success: function …

27
ไม่สามารถจัดลำดับการตอบสนองใน Web API ด้วย Json
ฉันกำลังทำงานกับ 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(); } }

9
อักขระจุด '.' ใน MVC Web API 2 สำหรับคำขอเช่น api / people / STAFF.45287
URL ที่ฉันพยายามให้ทำงานเป็นหนึ่งในรูปแบบของ: http://somedomain.com/api/people/staff.33311 (เช่นเดียวกับไซต์เช่น LAST.FM อนุญาตให้มีสัญญาณทุกประเภทใน URL RESTFul & WebPage ตัวอย่างเช่น " http://www.last.fm/artist/psy'aviah " เป็น URL ที่ถูกต้องสำหรับ LAST.FM) สถานการณ์ต่อไปนี้ทำงานอะไร: - http://somedomain.com/api/people/ - ซึ่งส่งคืนทุกคน - http://somedomain.com/api/people/staff33311 - จะใช้ได้เช่นกัน แต่ไม่ใช่สิ่งที่ฉัน ' หลังจากนั้นฉันต้องการให้ URL ยอมรับ "จุด" ดังตัวอย่างด้านล่าง - http://somedomain.com/api/people/staff.33311 - แต่สิ่งนี้ทำให้ฉันมี HTTP Error 404.0 - Not Found The resource you are looking for …

14
Asp.NET Web API - 405 - กริยา HTTP ที่ใช้ในการเข้าถึงเพจนี้ไม่ได้รับอนุญาต - วิธีตั้งค่าการแมปตัวจัดการ
ฉันเขียนบริการ REST โดยใช้ ASP.NET Web API ฉันพยายามส่งคำขอ HttpDelete แต่ได้รับข้อผิดพลาดต่อไปนี้: 405 - ไม่อนุญาตให้ใช้คำกริยา HTTP ที่ใช้ในการเข้าถึงเพจนี้ ฉันคิดว่าฉันใกล้จะแก้ปัญหาแล้วฉันพบว่าฉันควรเปิดใช้งานการจัดการระยะไกลของ IIS ไปที่ส่วน Handler Mappings และเพิ่มคำกริยา DELETE ในตำแหน่งที่เหมาะสม ... แต่ปัญหาคือมีตำแหน่งที่แตกต่างกันมากมาย รายการ ... (เช่นที่นี่: http://www.somacon.com/p126.php ) ฉันควรแก้ไขข้อใด ไม่กี่คนที่ไม่มีส่วนขยายเช่น "ExtensionUrlHandler-Integrated-4.0" และฉันเพิ่มคำกริยา DELETE เข้าไป แต่ก็ยังใช้ไม่ได้ ... มันเป็นเพียงการถ่ายภาพในที่มืดเพื่อแก้ไขภาพนั้นดังนั้นฉันควรปรับเปลี่ยนตำแหน่งอื่นหรือไม่ ถ้าเป็นเช่นนั้นอันไหน? หรืออาจจะมีอะไรมากกว่านั้นที่ฉันควรทำ? บริการเว็บเดียวกันทำงานได้ดีอย่างสมบูรณ์กับบริการในพื้นที่ของฉันดังนั้นฉันคิดว่าปัญหาเกิดจาก IIS ระยะไกล ... ทักทาย

10
จัดการ ModelState Validation ใน ASP.NET Web API
ฉันสงสัยว่าฉันจะตรวจสอบโมเดลด้วย 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 ของฉัน: public void Post(Enquiry enquiry) …

5
การทำงาน POST Multipart Request ด้วย Volley และไม่มี HttpEntity
อย่างไรก็ตามนี่ไม่ใช่คำถามจริงๆ แต่ฉันต้องการแบ่งปันรหัสการทำงานของฉันที่นี่เพื่อเป็นข้อมูลอ้างอิงเมื่อคุณต้องการ อย่างที่เราทราบกันดีว่าHttpEntityเลิกใช้ API22 และถูกลบออกไปตั้งแต่ API23 ในขณะนี้เราไม่สามารถเข้าถึงHttpEntity Reference บน Android Developer ได้อีกต่อไป (404) ดังนั้นต่อไปนี้เป็นตัวอย่างโค้ดการทำงานของฉันสำหรับการโพสต์ Multipart ขอกับวอลเล่ย์และไม่มี HttpEntity มันใช้งานได้ทดสอบด้วยAsp.Net Web API. แน่นอนว่าโค้ดอาจเป็นเพียงตัวอย่างพื้นฐานที่โพสต์ไฟล์ที่วาดได้สองไฟล์ที่มีอยู่นอกจากนี้ยังไม่ใช่ทางออกที่ดีที่สุดสำหรับทุกกรณีและไม่ใช่การปรับแต่งที่ดี 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; …

9
ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์มีข้อผิดพลาดตัวสร้างสาธารณะแบบไม่มีพารามิเตอร์
ฉันได้ทำตามบทช่วยสอนนี้ซึ่งใช้งานได้ดีจนกระทั่งฉันแก้ไขDbContextให้มีตัวสร้างเพิ่มเติม ตอนนี้ฉันมีปัญหากับการแก้ปัญหาและไม่แน่ใจว่าจะต้องทำอย่างไรเพื่อแก้ไขปัญหานี้ มีวิธีง่ายๆในการบังคับให้คว้าตัวสร้างแบบไม่มีพารามิเตอร์หรือฉันเข้าใกล้สิ่งนี้ไม่ถูกต้อง? DbContext ด้วยตัวสร้างสองตัว: 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 …

9
Web API 2: วิธีส่งคืน JSON ด้วยชื่อคุณสมบัติ camelCased บนอ็อบเจ็กต์และอ็อบเจ็กต์ย่อย
อัปเดต ขอบคุณสำหรับคำตอบทั้งหมด ฉันอยู่ในโปรเจ็กต์ใหม่และดูเหมือนว่าในที่สุดฉันก็มาถึงจุดต่ำสุดของสิ่งนี้: ดูเหมือนว่ารหัสต่อไปนี้จะถูกตำหนิ: 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 …

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" แต่อนุญาตเพียงค่าเดียวเท่านั้น Origin 'http://127.0.0.1:9000' จึงไม่ได้รับอนุญาตให้เข้าถึง Fiddler แสดงให้ฉันเห็นว่ามีรายการส่วนหัวสองรายการในคำขอรับหลังจากคำขอตัวเลือกสำเร็จ ฉันทำอะไรผิดพลาดที่ไหนและที่ไหน อัปเดต เมื่อฉันใช้ jQuery $ .get แทน $ http.get ข้อความแสดงข้อผิดพลาดเดียวกันจะปรากฏขึ้น ดูเหมือนว่าจะไม่มีปัญหากับ AngularJS แต่มันผิดตรงไหน?

6
จำเป็นต้องบันทึกคำขอ asp.net webapi 2 และเนื้อหาตอบกลับไปยังฐานข้อมูล
ฉันใช้ Microsoft Asp.net WebApi2 ที่โฮสต์บน IIS ฉันต้องการบันทึกเนื้อหาคำขอ (XML หรือ JSON) และเนื้อหาการตอบสนองสำหรับแต่ละโพสต์ ไม่มีอะไรพิเศษเกี่ยวกับโปรเจ็กต์นี้หรือผู้ควบคุมกำลังประมวลผลโพสต์ ฉันไม่สนใจที่จะใช้เฟรมเวิร์กการบันทึกเช่น nLog, elmah, log4net หรือคุณสมบัติการติดตามในตัวของเว็บ API เว้นแต่ว่าจำเป็นต้องทำเช่นนั้น ฉันแค่อยากรู้ว่าจะใส่รหัสบันทึกของฉันไว้ที่ไหนและจะรับ JSON หรือ XML จริงจากคำขอและการตอบกลับขาเข้าและขาออกได้อย่างไร วิธีการโพสต์คอนโทรลเลอร์ของฉัน: public HttpResponseMessage Post([FromBody])Employee employee) { if (ModelState.IsValid) { // insert employee into to the database } }

4
ทรัพยากรที่ร้องขอไม่รองรับวิธี HTTP 'GET'
เส้นทางของฉันได้รับการกำหนดค่าอย่างถูกต้องและวิธีการของฉันมีแท็กตกแต่ง ฉันยังคงได้รับข้อความ "ทรัพยากรที่ร้องขอไม่รองรับข้อความ" GET "ของวิธี HTTP? [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, …

9
จะบังคับให้ ASP.NET Web API ส่งคืน JSON ได้อย่างไร
ASP.NET Web API ทำการเจรจาเนื้อหาตามค่าเริ่มต้น - จะส่งคืน XML หรือ JSON หรือประเภทอื่น ๆ ตามAcceptส่วนหัว ฉันไม่ต้องการ / ต้องการสิ่งนี้มีวิธี (เช่นแอตทริบิวต์หรืออะไรบางอย่าง) เพื่อบอกให้ Web API ส่งคืน JSON เสมอหรือไม่

10
วิธีเพิ่มและรับค่าส่วนหัวใน WebApi
ฉันต้องการสร้างวิธีการ POST ใน WebApi เพื่อที่ฉันจะได้ส่งข้อมูลจากแอปพลิเคชันไปยังวิธี WebApi ฉันไม่สามารถรับค่าส่วนหัวได้ ที่นี่ฉันได้เพิ่มค่าส่วนหัวในแอปพลิเคชัน: using (var client = new WebClient()) { // Set the header so it knows we are sending JSON. client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.Headers.Add("Custom", "sample"); // Make the request var response = client.UploadString(url, jsonObj); } ทำตามวิธีการโพสต์ WebApi: public string Postsam([FromBody]object jsonData) { HttpRequestMessage re …

5
เอกสาร Xml สำหรับ Web Api จะรวมเอกสารจากนอกเหนือจากโครงการหลักได้อย่างไร
เอกสารสำหรับการเปิดใช้บูรณาการ XMLDOC เป็นโครงการ Api เว็บของคุณจะปรากฏขึ้นเพื่อสถานการณ์ที่จับเฉพาะที่ทุกประเภท API ของคุณเป็นส่วนหนึ่งของโครงการ WebAPI ของคุณ โดยเฉพาะอย่างยิ่งจะกล่าวถึงวิธีการกำหนดเส้นทางเอกสาร XML ใหม่App_Data/XmlDocument.xmlและการยกเลิกการใส่เครื่องหมายบรรทัดใน config ของคุณที่จะใช้ไฟล์นั้น โดยปริยายนี้อนุญาตให้ใช้ไฟล์เอกสารของโครงการเดียวเท่านั้น อย่างไรก็ตามในการตั้งค่าของฉันฉันมีคำขอและประเภทการตอบกลับที่กำหนดไว้ในโครงการ "โมเดล" ทั่วไป ซึ่งหมายความว่าหากฉันมีจุดสิ้นสุดที่กำหนดไว้เช่น: [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, …

4
ข้อผิดพลาด: ช่องส่วนหัวของคำขอประเภทเนื้อหาไม่ได้รับอนุญาตโดย Access-Control-Allow-Headers
ฉันสร้างโครงการ mvc4 web api โดยใช้ vS2012 ฉันใช้บทช่วยสอนต่อไปนี้เพื่อแก้ปัญหา Cross-Origin Resource Sharing "http://blogs.msdn.com/b/carlosfigueira/archive/2012/07/02/cors-support-in-asp-net-web-api- rc-version.aspx ". ทำงานได้สำเร็จและฉันโพสต์ข้อมูลจากฝั่งไคลเอ็นต์ไปยังเซิร์ฟเวอร์เรียบร้อยแล้ว หลังจากนั้นสำหรับการใช้ Autherization ในโปรเจ็กต์ของฉันฉันใช้บทช่วยสอนต่อไปนี้เพื่อติดตั้ง OAuth2 "http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for -mvc- สองขา -plement.aspx " นี่คือความช่วยเหลือฉันในการรับ RequestToken ทางฝั่งไคลเอ็นต์ แต่เมื่อฉันโพสต์ข้อมูลจากฝั่งไคลเอ็นต์ฉันได้รับข้อผิดพลาด "XMLHttpRequest ไม่สามารถโหลด http: // ช่องส่วนหัวของคำขอ Content-Type ไม่ได้รับอนุญาตโดย Access-Control-Allow-Headers" รหัสฝั่งไคลเอ็นต์ของฉันมีลักษณะดังนี้ function PostLogin() { var Emp = {}; Emp.UserName = $("#txtUserName").val(); var pass = $("#txtPassword").val(); …

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