Tag: httpmodule

在MVC(httpmodule)中将英文数字更改为波斯语,反之亦然?

我想将所有英文数字更改为波斯语以便向用户显示。 并再次将它们更改为英文数字以提供所有请求(回发) 例如: 我们在视图IRQ170有这样的东西,我想向用户显示IRQ۱۷۰并给用户提供IRQ170 。 我知道,我必须使用Httpmodule ,但我不知道怎么办? 你能指导我吗? 编辑: 让我来描述一下: 我写了以下http模块: using System; using System.Collections.Specialized; using System.Diagnostics; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Web.UI; using Smartiz.Common; namespace Smartiz.UI.Classes { public class PersianNumberModule : IHttpModule { private StreamWatcher _watcher; #region Implementation of IHttpModule /// /// Initializes a module and prepares it to handle […]

HttpResponsefilter什么都不返回

我编写了一个HttpModule,用于拦截调用WebResource.axd处理程序,以便我可以对javascript执行一些后期处理。 该模块包装Response.Filter流以执行其处理并将其更改写入基础流。 我遇到的问题是脚本没有返回到浏览器。 所以作为一个非常简单的例子,它只是作为一个传递,模块看起来像这样: public class ResourceModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute); } void context_PostRequestHandlerExecute(object sender, EventArgs e) { HttpApplication context = sender as HttpApplication; if (context.Request.Url.ToString().Contains(“WebResource.axd”)) { context.Response.Filter = new ResourceFilter(context.Response.Filter); } } } 并且只输出它收到的资源的ResourceFilter如下所示: public class ResourceFilter : MemoryStream { private […]

如何修复HTTP错误500.22 – 内部服务器错误检测到的ASP.NET设置不适用于集成管理管道模式

我学习了Http modules ,在上次尝试中我得到了: HTTP错误500.22 – 内部服务器错误检测到的ASP.NET设置不适用于集成管理管道模式。 建议的解决方案之一是: 从IIS Express安装目录中,运行appcmd migrate config“Default Web Site /”。 所以从命令提示符我去了C\Program Files\IIS Express然后我执行了: appcmd migrate config “Default Web Site/” 我收到命令“对象配置”不支持“迁移”。 怎么做得好?

自定义身份validation的HttpModule如何与Windows身份validation交互?

我正在尝试创建一个自定义HttpModule,它控制哪些用户可以查看网站。 我正在尝试利用Windows身份validation来执行此操作。 在单个页面上,我可能会这样做: if (HttpContext.Current.User.Identity.Name.Contains(“jsmith”)) { Response.Write(“You do not have the correct permissions to view this site.”); Response.End(); } 但是因为我想在应用程序级别更加可配置,我想使用HttpModule。 这是我对代码的开始: using System; using System.Web; public class CustomAuthHttpModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(OnBeginRequest); context.EndRequest += new EventHandler(OnEndRequest); } void OnBeginRequest(object sender, EventArgs e) […]

如何在HTTPModule中关闭html标记之前注入HTML

我正在尝试在响应中注入一些额外的标记,但它没有按预期输出。 例如,以下代码将输出: … CONTENT private void OnEndRequest(Object source, EventArgs e) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; context.Response.Write(“CONTENT”); } 但我希望在关闭html标记之前输出内容 … CONTENT 关于如何实现这一点的任何想法?

如何限制HttpModule每个请求只有一个呼叫?

这是我对HttpModule的实现: 带模块的文件: public class HttpModuleRewriter : IHttpModule { #region IHttpModule public void Init(HttpApplication app) { app.BeginRequest += ProcessRequest; } public void Dispose() { } #endregion #region Protected Methods protected void ProcessRequest(object sender, EventArgs e) { … } } web.config中: 我在HttpModuleRewriter类的’Init’方法中加入了断点。 应用程序启动时调用第一次方法…每个页面请求只调用一次模块。 如果我对页面请求很快(第二个请求将在第一个请求被处理之前发送),那么方法’Init’会被少量调用,每个跟随页面的请求会导致2-3次调用我的模块… 为什么? 我怎么能避免这种情况? 谢谢。 PS我已经将公共构造函数添加到HttpModuleRewriter中以计算引用量,并且在我的请求期间我创建了5个模块…并且对于每个页面2模块的请求实际上被调用…但仅针对第一个导航页面,以下所有页面(我已经检查了3个其他页面)模块只被调用一次(只调用了1个实例)… 为什么第一页被处理两次? 建议的答案(使用’初始化’标志)也无济于事。

HttpModule.Init – 在IIS7集成模式下安全地添加HttpApplication.BeginRequest处理程序

我的问题类似但不完全相同: 为什么我的主机(softsyshosting.com)不支持BeginRequest和EndRequest事件处理程序? (我也读过其中引用的mvolo博客) 目标是成功地在IHttpModule.Init事件(或模块内部的任何地方)中挂钩HttpApplication.BeginRequest,使用通过system.webServer配置集成的普通HttpModule,即不会: 入侵Global.asax或 覆盖HttpApplication(该模块旨在自包含和可重用,所以例如我有这样的配置): 到目前为止,我试图将一个侦听器附加到HttpApplication.BeginRequest的任何策略都会产生以下两种情况之一:症状1是BeginRequest永远不会触发,或者症状2是所有托管请求都抛出以下exception,我不能从用户代码中捕获并处理它: Stack Trace: [NullReferenceException: Object reference not set to an instance of an object.] System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30 System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112 System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616 在app.BeginRequest += new EventHandler(this.OnBeginRequest)当然会停止exception。 Init根本不引用Context或Request对象。 我试过了: 在项目的任何位置删除了对HttpContext.Current的所有引用(仍然是症状1) 测试从我的OnBeginRequest方法的主体中删除所有代码,以确保问题不在方法的内部(=exception) 嗅探堆栈跟踪并仅调用app.BeginRequest + = …如果堆栈未由InitializeApplication启动(= BeginRequest未启动) 只在第二次通过Init时调用app.BeginRequest + =(= BeginRequest未激活) […]

使用HttpModule进行exception处理

我们正在审查该公司系统的exception处理之一,并发现了一些有趣的事情。 大多数代码块(如果不是全部)都在try / catch块中,并且在catch块内部抛出了一个新的BaseApplicationException – 它似乎来自企业库。 我在这里遇到了一些麻烦,因为我没有看到这样做的好处。 (在任何时候发生另一个例外)其中一个开发人员一直在使用该系统说这是因为该类负责发布exception(发送电子邮件和类似的东西),但他不太确定。 在花了一些时间浏览代码之后,我非常有信心地说,这就是收集有关环境的信息而不是发布它。 我的问题是: – 将所有代码包装在try {} catch {}块中并且抛出新的exception是否合理? 如果是,为什么? 有什么好处? 我个人认为,使用HttpModule会更容易,注册Application事件的Error事件,并在模块内部执行必要的操作。 如果我们走这条路,我们会错过什么吗? 有什么缺点吗? 您的意见非常感谢。

如何从ASP.NET MVC中的HttpModule执行控制器操作?

我有以下IHttpModule ,我试图找出如何从控制器为给定的绝对或相对URL执行操作。 public class CustomErrorHandlingModule : IHttpModule { #region Implementation of IHttpModule public void Init(HttpApplication context) { context.Error += (sender, e) => OnError(new HttpContextWrapper(((HttpApplication)sender).Context)); } public void Dispose() {} public void OnError(HttpContextBase context) { // Determine error resource to display, based on HttpStatus code, etc. // For brevity, i’ll hardcode it for this SO question. […]

HttpModule – 获取HTML内容或控件以进行修改

试过这样的事情: HttpApplication app = s as HttpApplication; //s is sender of the OnBeginRequest event System.Web.UI.Page p = (System.Web.UI.Page)app.Context.Handler; System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label(); lbl.Text = “TEST TEST TEST”; p.Controls.Add(lbl); 运行时,我得到“对象引用未设置为对象的实例”。 最后一行…… 如何在原始文件中的特定loactions处插入两行文本(asp.net/html)? 我怎么弄清楚文件的扩展名(我只想在aspx文件上应用这个…?