คำถามติดแท็ก httpcontext

14
การตั้งค่า HttpContext.Current.Session ในการทดสอบหน่วย
ฉันมีบริการเว็บฉันกำลังพยายามทดสอบหน่วย ในบริการมันดึงค่าหลายHttpContextอย่างเช่น: m_password = (string)HttpContext.Current.Session["CustomerId"]; m_userID = (string)HttpContext.Current.Session["CustomerUrl"]; ในการทดสอบหน่วยฉันกำลังสร้างบริบทโดยใช้คำขอผู้ปฏิบัติงานง่ายๆเช่น: SimpleWorkerRequest request = new SimpleWorkerRequest("", "", "", null, new StringWriter()); HttpContext context = new HttpContext(request); HttpContext.Current = context; อย่างไรก็ตามเมื่อใดก็ตามที่ฉันพยายามตั้งค่า HttpContext.Current.Session HttpContext.Current.Session["CustomerId"] = "customer1"; HttpContext.Current.Session["CustomerUrl"] = "customer1Url"; ฉันได้รับข้อยกเว้นอ้างอิง null ที่ระบุว่าHttpContext.Current.Sessionเป็นโมฆะ มีวิธีการเริ่มต้นเซสชันปัจจุบันในการทดสอบหน่วยหรือไม่

4
จำลอง HttpContext.Current ในวิธีทดสอบ Init
ฉันกำลังพยายามเพิ่มการทดสอบหน่วยในแอปพลิเคชัน ASP.NET MVC ที่ฉันสร้างขึ้น ในการทดสอบหน่วยของฉันฉันใช้รหัสต่อไปนี้: [TestMethod] public void IndexAction_Should_Return_View() { var controller = new MembershipController(); controller.SetFakeControllerContext("TestUser"); ... } ด้วยผู้ช่วยดังต่อไปนี้ในการจำลองบริบทของตัวควบคุม: public static class FakeControllerContext { public static HttpContextBase FakeHttpContext(string username) { var context = new Mock<HttpContextBase>(); context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username)); if (!string.IsNullOrEmpty(username)) context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username)); return context.Object; } public static void SetFakeControllerContext(this …

3
ฉันจะรับวัตถุ HttpContext จาก HttpContextBase ใน ASP.NET MVC 1 ได้อย่างไร
ฉันทำงานกับเครื่องมือ WebForms / MVC ที่ไม่เชื่อเรื่องพระเจ้าและฉันต้องได้รับตัวอย่างของHttpContextการอ้างอิงถึงHttpContextBaseวัตถุ ฉันไม่สามารถใช้HttpContext.Currentเพราะฉันต้องการให้มันทำงานแบบอะซิงโครนัสได้เช่นกัน ( HttpContext.Currentส่งคืนnullระหว่างการร้องขอแบบอะซิงโครนัส) ฉันรู้HttpContextWrapperแต่ไปในทางที่ผิด

5
ฉันจะจำลอง HttpContext ใน ASP.NET MVC โดยใช้ Moq ได้อย่างไร
[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist() { var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); context .Setup(c => c.Request) .Returns(request.Object); HomeController controller = new HomeController(); controller.HttpContext = context; //Here I am getting an error (read only). ... } ตัวควบคุมฐานของฉันมีการแทนที่การเริ่มต้นที่ได้รับเป็น requestContext นี้ ฉันพยายามจะผ่านเรื่องนี้ไป แต่ฉันทำอะไรไม่ถูก protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); …

6
จะเข้าถึงเมธอด HttpServerUtility.MapPath ใน Thread หรือ Timer ได้อย่างไร?
ฉันใช้System.Timers.Timerแอปพลิเคชัน Asp.Net ของฉันและฉันจำเป็นต้องใช้HttpServerUtility.MapPathวิธีการที่ดูเหมือนว่าจะใช้ได้ผ่านทางHttpContext.Current.Server.MapPathไฟล์. ปัญหาคือว่าHttpContext.Currentคือnullเมื่อTimer.Elapsedเหตุการณ์ fires มีวิธีอื่นในการอ้างอิงถึงวัตถุ HttpServerUtility หรือไม่? ฉันสามารถฉีดเข้าไปในคอนสตรัคเตอร์ของชั้นเรียนได้ ปลอดภัยหรือไม่? ฉันจะแน่ใจได้อย่างไรว่าจะไม่ถูกเก็บรวบรวมขยะในตอนท้ายของคำขอปัจจุบัน ขอบคุณ!

4
รับ System.Web.UI.Page ปัจจุบันจาก HttpContext?
นี่เป็นคำถามสองส่วน ขั้นแรก HttpContext.Current สอดคล้องกับวัตถุ System.UI.Page ปัจจุบันหรือไม่ และคำถามที่สองซึ่งอาจเกี่ยวข้องกับคำถามแรกคือเหตุใดฉันจึงไม่สามารถใช้สิ่งต่อไปนี้เพื่อดูว่าหน้าปัจจุบันใช้อินเทอร์เฟซ: private IWebBase FindWebBase() { if (HttpContext.Current as IWebBase != null) { return (IWebBase)HttpContext.Current.; } throw new NotImplementedException("Crawling for IWebBase not implemented yet"); } บริบททั่วไปคือการควบคุมบางอย่างจำเป็นต้องทราบว่าพวกเขากำลังดำเนินการเป็นส่วนเว็บของ SharePoint หรือเป็นส่วนหนึ่งของกรอบงาน Asp.Net ฉันได้แก้ไขปัญหาโดยกำหนดให้การควบคุมส่งผ่านการอ้างอิงถึงตัวมันเองและตรวจสอบคุณสมบัติเพจของตัวควบคุม แต่ฉันยังคงสงสัยว่าทำไมข้างต้นไม่ได้ผล ข้อผิดพลาดของคอมไพเลอร์คือ: ไม่สามารถแปลง System.Web.HttpContext เป็น ... IWebBase ผ่านการแปลงอ้างอิงการแปลงแบบมวยการแปลงแบบ unboxing การแปลงการตัดหรือการแปลงประเภท null
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.