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

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

16
ปฏิเสธที่จะแสดงในเฟรมเนื่องจากตั้งค่า 'X-Frame-Options' เป็น 'SAMEORIGIN'
ฉันกำลังพัฒนาเว็บไซต์ที่ควรจะตอบสนองเพื่อให้ผู้คนสามารถเข้าถึงได้จากโทรศัพท์ของพวกเขา ไซต์มีบางส่วนที่ปลอดภัยซึ่งสามารถลงชื่อเข้าใช้ด้วย Google, Facebook, ... ฯลฯ (OAuth) แบ็กเอนด์ของเซิร์ฟเวอร์ได้รับการพัฒนาโดยใช้ ASP.Net Web API 2 และส่วนหน้าส่วนใหญ่เป็น AngularJS พร้อมกับมีดโกนบางส่วน สำหรับส่วนการรับรองความถูกต้องทุกอย่างทำงานได้ดีในเบราว์เซอร์ทั้งหมดรวมถึง Android แต่การรับรองความถูกต้องของ Google ไม่ทำงานบน iPhone และมันทำให้ฉันข้อความผิดพลาดนี้ Refused to display 'https://accounts.google.com/o/openid2/auth ?openid.ns=http://specs.openid.ne…tp://axschema.org/namePerson /last&openid.ax.required=email,name,first,last' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. ตอนนี้ฉันกังวลว่าฉันจะไม่ใช้ iframe ใด ๆ ในไฟล์ HTML ของฉัน ฉัน googled ไปรอบ ๆ แต่ไม่มีคำตอบให้ฉันแก้ไขปัญหา


5
การพิสูจน์ตัวตน JWT สำหรับ ASP.NET Web API
ฉันพยายามสนับสนุนโทเค็นผู้ถือ JWT (JSON Web Token) ในแอปพลิเคชันเว็บ API ของฉันและฉันหลงทาง ฉันเห็นการสนับสนุน. NET Core และสำหรับแอปพลิเคชัน OWIN ฉันกำลังโฮสต์แอปพลิเคชันของฉันใน IIS ฉันจะบรรลุโมดูลการรับรองความถูกต้องนี้ในแอปพลิเคชันของฉันได้อย่างไร มีวิธีใดบ้างที่ฉันสามารถใช้การ<authentication>กำหนดค่าที่คล้ายกับวิธีที่ฉันใช้การตรวจสอบสิทธิ์แบบฟอร์ม / Windows

10
HttpClient ไม่รองรับวิธี PostAsJsonAsync C #
ฉันพยายามโทรหาเว็บ API จากเว็บแอปพลิเคชันของฉัน ฉันใช้. Net 4.5 และในขณะที่เขียนรหัสที่ฉันได้รับข้อผิดพลาดHttpClientไม่มีPostAsJsonAsyncวิธีการกำหนด ด้านล่างเป็นรหัส: HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:51093/"); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var user = new Users(); user.AgentCode = 100; user.Remarks = "Test"; user.CollectionDate = System.DateTime.Today; user.RemittanceDate = System.DateTime.Today; user.TotalAmount = 1000; user.OrgBranchID = 101; var response = client.PostAsJsonAsync("api/AgentCollection", user).Result; และฉันได้รับข้อความแสดงข้อผิดพลาด: ข้อผิดพลาด: …

4
ฉันจะตั้งค่าคุกกี้บน HttpClient's HttpRequestMessage ได้อย่างไร
ฉันพยายามที่จะใช้ API เว็บที่HttpClientจะทำโพสต์ไปยังปลายทางที่ต้องเข้าสู่ระบบในรูปแบบของคุกกี้ของ HTTP ที่ระบุบัญชี (นี้เป็นเพียงสิ่งที่เป็น#ifdef'ed จากรุ่นที่วางจำหน่าย) ฉันจะเพิ่มคุกกี้วิธีไปHttpRequestMessage?

18
พบการกระทำหลายอย่างที่ตรงกับคำขอใน Web Api
ฉันได้รับข้อผิดพลาดนี้อย่างต่อเนื่องเมื่อพยายามใช้วิธี 2 "รับ" พบการกระทำหลายอย่างที่ตรงกับคำขอ: webapi ฉันได้ดูรอบ ๆ คำถามที่คล้ายกันเกี่ยวกับเรื่องนี้ในกอง แต่ฉันไม่ได้รับมัน ฉันมี 2 ชื่อต่างกันและใช้แอตทริบิวต์ "HttpGet" [HttpGet] public HttpResponseMessage Summary(MyVm vm) { return null; } [HttpGet] public HttpResponseMessage FullDetails() { return null; }

7
Microsoft Web API: คุณจะทำ Server.MapPath ได้อย่างไร
เนื่องจากMicrosoft Web APIไม่ใช่MVCคุณจึงไม่สามารถทำสิ่งนี้ได้: var a = Request.MapPath("~"); หรือสิ่งนี้ var b = Server.MapPath("~"); เนื่องจากสิ่งเหล่านี้อยู่ภายใต้System.Webเนมสเปซไม่ใช่System.Web.Httpเนมสเปซ ดังนั้นคุณจะหาเส้นทางเซิร์ฟเวอร์สัมพัทธ์ในWeb API ได้อย่างไร ฉันเคยทำสิ่งนี้ในMVC : var myFile = Request.MapPath("~/Content/pics/" + filename); ซึ่งจะให้เส้นทางที่แน่นอนบนดิสก์: "C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"

13
การส่งคืนรหัสสถานะ http จากตัวควบคุม Web Api
ฉันกำลังพยายามส่งคืนรหัสสถานะ 304 ที่ไม่ได้แก้ไขสำหรับวิธีการ GET ในตัวควบคุมเว็บ api วิธีเดียวที่ฉันประสบความสำเร็จคือสิ่งนี้: public class TryController : ApiController { public User GetUser(int userId, DateTime lastModifiedAtClient) { var user = new DataEntities().Users.First(p => p.Id == userId); if (user.LastModified <= lastModifiedAtClient) { throw new HttpResponseException(HttpStatusCode.NotModified); } return user; } } ปัญหาที่นี่คือมันไม่ใช่ข้อยกเว้นมันไม่ได้ถูกแก้ไขดังนั้นแคชของลูกค้าก็โอเค ฉันต้องการให้ประเภทการคืนเป็นผู้ใช้ด้วย (เนื่องจากเว็บ api ทุกตัวอย่างแสดงด้วย GET) ไม่ส่งคืน HttpResponseMessage …

17
HTTP Error 500.19 และรหัสข้อผิดพลาด: 0x80070021
ฉันมี webAPI build อย่างง่ายโดย Visual Studio 2013 มันทำงานได้ดีเมื่อฉันเรียกใช้จาก VS13 แต่เมื่อฉันคัดลอกโครงการใน IIS ท้องถิ่นมันทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้ HTTP Error 500.19 - ข้อผิดพลาดเซิร์ฟเวอร์ภายในไม่สามารถเข้าถึงหน้าที่ร้องขอได้เนื่องจากข้อมูลการกำหนดค่าที่เกี่ยวข้องสำหรับหน้านั้นไม่ถูกต้อง ข้อมูลข้อผิดพลาดโดยละเอียด: โมดูล IIS Web Core ประกาศ BeginRequest ตัวจัดการ ยังไม่ได้ตัดสินใจ รหัสข้อผิดพลาด 0x80070021 ข้อผิดพลาด การกำหนดค่าส่วนการกำหนดค่านี้ไม่สามารถใช้ที่เส้นทางนี้ สิ่งนี้เกิดขึ้นเมื่อส่วนถูกล็อคในระดับผู้ปกครอง การล็อคเป็นค่าเริ่มต้น (overrideModeDefault = "Deny") หรือตั้งค่าอย่างชัดเจนโดยแท็กตำแหน่งที่มี overrideMode = "Deny" หรือ Legacy allowOverride = "false" กำหนดค่าไฟล์ \? \ C: \ inetpub …

5
พารามิเตอร์สตริงข้อความค้นหาเพิ่มเติมใน ASP.NET Web API
ฉันต้องใช้วิธีการ WebAPI ต่อไปนี้: /api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX พารามิเตอร์สตริงแบบสอบถามทั้งหมดสามารถเป็นค่าว่างได้ นั่นคือผู้เรียกสามารถระบุจาก 0 ถึงพารามิเตอร์ทั้งหมด 5 ตัว ในMVC4 เบต้าฉันเคยทำสิ่งต่อไปนี้: public class BooksController : ApiController { // GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01 public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) { // ... } } MVC4 RC ไม่ทำงานเช่นนี้อีกต่อไป หากฉันระบุพารามิเตอร์น้อยกว่า 5 พารามิเตอร์จะตอบกลับด้วย404คำพูด: ไม่พบการกระทำใน 'หนังสือ' ของคอนโทรลเลอร์ที่ตรงกับคำขอ ลายเซ็นวิธีการที่ถูกต้องคืออะไรที่จะทำให้มันทำงานเหมือนที่เคยทำโดยไม่ต้องระบุพารามิเตอร์ทางเลือกในการกำหนดเส้นทาง URL?

6
การเปิดเผย localhost กับอินเทอร์เน็ตผ่านการสร้างช่องสัญญาณ (โดยใช้ ngrok): ข้อผิดพลาด HTTP 400: คำขอไม่ถูกต้อง; ชื่อโฮสต์ไม่ถูกต้อง
จากคำถามรุ่นก่อนหน้ามี: สิ่งนี้เรียกดูเว็บไซต์ที่มีที่อยู่ ip มากกว่า localhostซึ่งสรุปสิ่งที่ฉันทำไปมาก ... ฉันได้ทำงานในท้องถิ่นของ IP แล้ว จากนั้นฉันก็พบ ngrok และเห็นได้ชัดว่าฉันไม่จำเป็นต้องเชื่อมต่อผ่าน IP สิ่งที่ฉันพยายามทำคือการเปิดเผยเว็บไซต์ของฉันทำงานบน localhost กับอินเทอร์เน็ต ฉันพบเครื่องมือที่จะทำสิ่งนี้: ngrok ใช้งานเว็บไซต์ใน visual studio เว็บไซต์เริ่มต้นที่ localhost / port # ฉันเรียกใช้คำสั่ง "ngrok http port #" ในบรรทัดคำสั่ง ดูเหมือนว่าทุกอย่างจะเริ่มต้นได้ดี ฉันสร้าง URL ขึ้นมาสองสามอันและ URL การตรวจสอบ ngrok (localhost: 4040) ปัญหาเดียวคือเมื่อฉันไปที่ URL ที่สร้างขึ้นฉันได้รับข้อผิดพลาด HTTP 400: คำขอชื่อโฮสต์ไม่ถูกต้องไม่ถูกต้อง นี่เป็นข้อผิดพลาดที่แตกต่างจากเมื่อฉันเรียกใช้ "ngrok http …

30
พารามิเตอร์การโพสต์เป็นโมฆะเสมอ
ตั้งแต่อัปเกรดเป็น RC สำหรับ WebAPI ฉันมีปัญหาแปลก ๆ จริง ๆ เมื่อเรียก POST บน WebAPI ของฉัน ฉันกลับไปที่เวอร์ชันพื้นฐานที่สร้างในโครงการใหม่ ดังนั้น: public void Post(string value) { } และโทรจาก Fiddler: Header: User-Agent: Fiddler Host: localhost:60725 Content-Type: application/json Content-Length: 29 Body: { "value": "test" } เมื่อฉันดีบักสตริง "value" จะไม่ถูกกำหนดให้ มันเป็น NULL เสมอ ใครมีปัญหานี้ (ฉันแรกเห็นปัญหาด้วยประเภทที่ซับซ้อนมากขึ้น) ปัญหาไม่ได้ถูกผูกไว้กับ ASP.NET MVC 4 เท่านั้นปัญหาเดียวกันนี้เกิดขึ้นสำหรับโครงการ …

15
ส่งคืนเนื้อหาด้วย IHttpActionResult สำหรับการตอบกลับที่ไม่ตกลง
สำหรับการกลับมาจากคอนโทรลเลอร์ Web API 2 ฉันสามารถส่งคืนเนื้อหาพร้อมการตอบกลับหากการตอบสนองตกลง (สถานะ 200) ดังนี้: public IHttpActionResult Get() { string myResult = ... return Ok(myResult); } หากเป็นไปได้ฉันต้องการใช้ประเภทผลลัพธ์ที่มีอยู่ภายในที่นี่เมื่อเป็นไปได้: https://msdn.microsoft.com/en-us/library/system.web.http.results(v=vs.118).aspx คำถามของฉันคือสำหรับการตอบกลับประเภทอื่น (ไม่ใช่ 200) ฉันจะส่งคืนข้อความ (สตริง) ด้วยได้อย่างไร ตัวอย่างเช่นฉันสามารถทำสิ่งนี้: public IHttpActionResult Get() { return InternalServerError(); } แต่ไม่ใช่: public IHttpActionResult Get() { return InternalServerError("Message describing the error here"); } เป็นการดีที่ฉันต้องการให้เป็นแบบทั่วไปเพื่อให้ฉันสามารถส่งข้อความกลับด้วยการใช้งานใด ๆ ของ …

28
ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'System.Web.Http 4.0.0 หลังจากอัปเดตจาก 2012 ถึง 2013
ฉันทำการอัพเกรดตาม http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- เว็บ API-2 ฉันได้รับข้อผิดพลาด มีใครได้รับข้อผิดพลาดนี้อีกหรือไม่ ผิดพลาดเซิร์ฟเวอร์ใน '/' แอพลิเคชัน. ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก HRESULT: 0x80131040) คำอธิบาย: เกิดข้อยกเว้นที่ไม่สามารถจัดการได้ในระหว่างการดำเนินการตามคำขอเว็บปัจจุบัน โปรดตรวจสอบการติดตามสแต็กสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดและที่มาในรหัส รายละเอียดข้อยกเว้น: System.IO.FileLoadException: ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'System.Web.Http, เวอร์ชัน = 4.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 31bf3856ad364e35' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก HRESULT: 0x80131040) ข้อผิดพลาดของแหล่งที่มา: บรรทัดที่ 48: บรรทัดที่ …

15
การเรียก webapi ที่ไม่ได้รับอนุญาตส่งคืนหน้าเข้าสู่ระบบแทน 401
ฉันจะกำหนดค่าโครงการ mvc / webapi ของฉันอย่างไรเพื่อให้วิธีการ webapi ที่เรียกจากมุมมองมีดโกนไม่ส่งคืนหน้าล็อกอินเมื่อไม่ได้รับอนุญาต มันเป็นแอปพลิเคชั่น MVC5 ซึ่งมีตัวควบคุม WebApi สำหรับการโทรผ่าน javascript ทั้งสองวิธีด้านล่าง [Route("api/home/LatestProblems")] [HttpGet()] public List<vmLatestProblems> LatestProblems() { // Something here } [Route("api/home/myLatestProblems")] [HttpGet()] [Authorize(Roles = "Member")] public List<vmLatestProblems> mylatestproblems() { // Something there } ถูกเรียกผ่านรหัสเชิงมุมดังต่อไปนี้: angular.module('appWorship').controller('latest', ['$scope', '$http', function ($scope,$http) { var urlBase = baseurl + '/api/home/LatestProblems'; …

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