问题标签 [httpcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11182 浏览

asp.net-mvc - 如何使用 Rhino Mocks 模拟 HttpContext.Application

我是 Mocking 框架的新手,并且已经开始使用 RhinoMocks 来协助我的 MVC 应用程序单元测试。

我正在使用Scott Hanselmanns MVC Mock Helper来协助模拟 HttpContext。我已经成功地(一段时间后)模拟了一些我需要的东西,但是在涉及到 HttpContext 的 Application 属性时却没有解决问题。

在我的应用程序中,我将一个对象存储在应用程序中并在控制器中检索它,例如:

这是在我的 MVC 应用程序中的 Application_Start 上创建的。

更新以下第一个答案(为清楚起见附加代码)目前在测试设置中我做:

在我的单元测试设置中,我这样做:

此调用为 Application 对象引发 NullReference 异常。

我的问题有两个:

1)这是正确的方法还是我从设计/架构的角度做错了什么?

2)为什么这不起作用?!

提前致谢。

0 投票
3 回答
1940 浏览

asp.net - 如何在不使用 httpcontext.items 的情况下在线程之间保留对象?

我有一个对象可以处理我的数据访问层 (DAL) 的内存缓存,我需要在线程之间保留它。根据我的阅读,首选方法是使用 httpcontext.item 和如下代码:

两个问题:这是否试图序列化对象,如果是,我如何让它保持对象完好无损并在内存中引用它而不是序列化它?我需要保持对象完好无损,因为它在后台处理数据库连接和缓存。

[编辑]

当我运行它时,我收到一个导致页面挂起的错误。事件日志中有两个项目。

错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919ed8,错误模块 kernel32.dll,版本 6.0.6001.18000,时间戳 0x4791ada5,异常代码 0xe053534f,错误偏移量 0x000000000002649d,进程 id 0x%10 0x%9,应用程序启动时间.

状态服务器已关闭过期的 TCP/IP 连接。客户端的 IP 地址是 127.0.0.1。过期的读取操作开始于 04/07/2009 20:44:29。

然后,我重新散列代码以将项目放入字典对象中,并根据会话 ID 得到这些 smae 错误。如果我使用静态变量,它可以正常工作,但是我遇到了我原来的问题,即用户将访问其他用户数据(显然这不是一个选项)。

重新散列的版本如下:(这适用于第一种方法,但不适用于此方法)

[编辑]

在同一会话下有多个 web 请求的情况下,锁定的好处。我最终使用了 httpcontext.item 方法,发现我的问题与属性是 byval 而不是 byref 有关。我已经更改了我的代码以包含通过 ref 处理 hte 对象的方法,现在它可以工作了。

0 投票
4 回答
9885 浏览

asp.net - 跨线程使用 HTTPContext

用户点击页面 spawn.aspx,然后生成六个线程,渲染页面全部使用

不要担心 ASP.Net 似乎向用户发送 1 个请求的 7 个响应这一事实,该部分已处理并且只发送一个响应。

问题是,在具有许多线程(quad-quads)的高流量环境(我们的生产环境)中,我们得到一个错误:

我们不能在其他地方复制它。我的同事认为这是因为我重用了原始 HTTPContext 并将其传递给其他线程,并且它不是线程安全的。

按照这个逻辑,我尝试制作一个新的 HTTPContext 来传递给线程。但它的某些部分似乎不会“合并”。具体来说,我需要将 Session 对象放入新的 HTTPContext。我想我也想加入其他部分,比如缓存。对于记录 HTTPContext.Current.Session.IsSynchronized 是假的。

我的问题是:

  1. 您认为错误是由于跨线程使用 HTTPContext 造成的吗?
  2. 我该如何解决?
  3. 如果修复是为每个线程复制 HTTPContext,我怎样才能将会话(和缓存)放入新的线程中?Request 和 Response 在 ctor 中,但 Session 不可设置。

编辑:更多细节

所以回到这个声明:“不要担心 ASP.Net 似乎为 1 个请求向用户发送了 7 个响应,该部分被处理并且只发送一个响应。” Raymond Chen 的超级粉丝,我同意你的观点:“现在你有两个问题”在没有更多信息的情况下是一个合理的说法。

实际发生的是,我正在构建一个 Excel 文档以发回。在 spawn.aspx 页面中,它设置了一些状态信息,包括它正在渲染到 excel 的事实,以及要渲染到的对象。每个生成的页面都会获取该信息,并且会一直阻塞,直到轮到它们呈现给对象。如果字面上看起来像这样:

但到那时为止的所有处理——数据库访问、控制层次结构,所有这些都是并行完成的。并且有很多 - 足以将它并行化同时仍然让它在 Render 上阻塞将把总时间减少一半以上。

最好的部分是 - 无需为 Excel 渲染重写任何内容。所有控件都知道如何将自己呈现为 excel,并且您可以独立访问每个生成的页面(这实际上是“正常情况” - excel 报告只是所有生成页面的聚合。)

所以我认为最终结果将是“你不能这样做,你需要重新考虑方法”——但我至少必须尝试一下,因为事实上一切都运行得非常好,无需复制任何逻辑或任何代码或必须抽象任何东西真是太完美了。而且只有多线程才是问题所在,如果我连续渲染页面一切都很好,只是速度很慢。

0 投票
2 回答
575 浏览

c# - 寻求一种万能的基于上下文的存储

首先,我希望基于上下文的存储在整个框架中是一致的!

话虽如此,我正在寻找一种优雅的解决方案,以使这些属性在 ASP.NET、WCF 和任何其他多线程 .NET 代码中安全。这些属性位于一些低级跟踪助手中(如果您想知道为什么它们是内部的,这些属性会通过方法公开)。

我宁愿不依赖于不需要的程序集(如 System.Web 等)。我不想要求任何人使用此代码来配置任何东西。我只是想让它工作;)虽然这可能太高了......

有人有什么技巧吗?(我看过 Spring 的实现)

更新

我所说的安全并不是同步的。关于这个问题的背景在这里

0 投票
2 回答
10189 浏览

asp.net - Web.HttpContext.Current.User.Identity.Name 来自哪里?

我有

作为我的自定义登录序列的一部分。后来,我有一些页面只允许特定角色:

据我所知,这会调用我的角色提供者的 GetRolesForUser 实现。它似乎从 Web.HttpContext.Current.User.Identity.Name 获取用户名参数。

我的问题是.... auth cookie 中的用户名何时被设置为我当前用户身份中的名称?

0 投票
7 回答
93919 浏览

wcf - 如何获取 wcf 应用程序的工作路径?

我想获取 WCF 应用程序的工作文件夹。我怎么才能得到它?

如果我尝试

我得到一个空引用异常(Http.Current 对象为空)。


我对工作文件夹的意思是我的 WCF 服务正在运行的文件夹。如果我设置aspNetCompatibilityEnabled="true",我会收到此错误:

服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。

0 投票
1 回答
3832 浏览

string - 您可以在 Silverlight 中进行 HtmlDecode 和 HtmlEncode 吗?

因此,既然System.Web&HttpContext在 Silverlight 中不可用,有没有办法在 Silverlight 应用程序中执行HtmlDecode&HtmlEncode而不需要一些可怕的正则表达式?

0 投票
2 回答
986 浏览

asp.net - ASP.NET:Request.Form 很慢!

我对Request.Form有一个非常奇怪的行为。

这是运行相同 ASP.NET 应用程序的两台 IIS 7 服务器。在第一种情况下,一切正常。但是第二个的性能非常慢。

Profiler 显示这一行:

每次花费超过130 毫秒

探查器日志:

0,60% get_Form - 4536 毫秒 - 68 次调用 - System.Web.HttpRequest.get_Form()

服务器配置是一样的(?)。第一台服务器运行 Vista,第二台(速度较慢)运行 Windows Web Server 2008。

UPD: 两个应用程序实例都以集成模式运行,池设置相同。

有任何想法吗?

0 投票
4 回答
16837 浏览

asp.net-mvc - ASP.NET MVC: HTTPContext and Dependency Injection

Currently I have an ActionFilter that gets the current users name from HttpContext and passes it into the action which uses it on a service method. eg:

I now have a reason to do this not at the action level but the controller constructor level. Currently I'm using structure map to create controllers and inject the service. I'm looking at something like:

That said, my IoC foo is really weak as this is the first project I've used it on.

So my question is... how can I tell structure map to pass in HttpContext in the constructor for HttpContextUserProvider? This just seems weird... I'm not sure how to think of HttpContext.

0 投票
2 回答
2419 浏览

c# - 通过 HttpContext 发送文件会导致浏览器挂起

我正在使用 HttpHandler 向用户发送文件。在所有浏览器上,至少查看/下载文件一次后,后续查看/下载的浏览器/应用程序会挂起。这是代码:

我读过调用 Response.Close() 和 Response.End() 不是一个好主意?已经尝试了离开和移除,它仍然会发生。

编辑:

TransmitFile 似乎存在已知问题。更详尽的解释见: http ://www.improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application

我删除了 TransmitFile 并更改为 WriteFile,它现在可以正常工作了。