我创建了一个简单的HttpModule,它在将响应发送到客户端之前从响应中删除空格.这适用于IIS7.0上的aspx页面,但如果我创建一个静态html页面并调用它,HttpModule不会启动(我知道的方式是因为源包含空格,否则本应删除).显然有些东西我做得不对,但不知道是什么.
我的网站位于.NET 4.0和.NET 4.0的应用程序池中ManagedPipelineMode = Integrated.
我已将模块添加为ManagedModule,并引用GAC的强名称密钥程序集.
谢谢
编辑 - 这是web.config中的system.webserver部分
<system.webServer>
...
<modules runAllManagedModulesForAllRequests="true">
<add name="RemoveWhitespaceHttpModule"
type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d"
preCondition="" />
</modules>
<defaultDocument>
<files>
<add value="TestForm.aspx" />
</files>
</defaultDocument>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
编辑 - 修正了它.对于任何感兴趣的人,这是我的模块检查响应然后决定是否继续删除空格的方式
if (contentType.Equals("text/html")
&& httpContext.Response.StatusCode == 200
&& httpContext.CurrentHandler != null)
{ ... }
Run Code Online (Sandbox Code Playgroud)
问题出在httpContext.CurrentHandler!= null之上的第三个条件.当为静态.html页面调用此模块时,currentHandler为null,因此代码永远不会进入操作html.我已经删除了这第三个条件,它现在有效.谢谢大家的回答
我们处于开发周期的一个阶段(asp.net mvc applciation),我们需要对现有的命令和事件进行更改(比如添加/删除一些属性等).
我一直在努力寻找一种在系统中引入命令/事件版本控制的方法.我已经在google/stackoverflow等上阅读了很多帖子,但我还是要看一个实现它的代码示例.在版本控制时是否应该遵循推荐的模式.如果是,任何示例/片段?
编辑:这是我有多远
所以如果我有一个活动
public class OrderSubmittedEvent : IDomainEvent
{
public int OrderId { get; private set; }
public OrderSubmittedEvent(int orderId)
{
OrderId = orderId;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我必须添加一些属性,我将上面的事件重命名为
public class OrderSubmittedEvent_V1 : IDomainEvent
{
public int OrderId { get; private set; }
public OrderSubmittedEvent_V1(int orderId)
{
OrderId = orderId;
}
}
Run Code Online (Sandbox Code Playgroud)
并引入另一个与我的原始事件同名的事件,但添加了属性,如此
public class OrderSubmittedEvent : IDomainEvent
{
public int OrderId { get; private set; }
public OrderSubmittedEvent(int version = 1, int orderId = 0, string …Run Code Online (Sandbox Code Playgroud) 我有一个基本存储库合同,其他合同扩展,如下所示
public interface IBaseRepository<T> where T : class
{
IList<T> GetContents();
}
Run Code Online (Sandbox Code Playgroud)
然后还有其他合同,如下所示扩展它
public interface IRepository1 : IBaseRepository<MyClass1>
{
}
public interface IRepository2 : IBaseRepository<MyClass2>
{
}
Run Code Online (Sandbox Code Playgroud)
我按如下方式实现IRepository1
public class Repository1 : IRepository1
{
public IList<MyClass1> GetContents()
{
//some code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
同样适用于IRepository2
public class Repository2 : IRepository2
{
public IList<MyClass2> GetContents()
{
//some code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个服务Service1,其中包括如下的IService
public class Service1 : IService
{
}
Run Code Online (Sandbox Code Playgroud)
我想在我的服务构造函数中使用我的基本存储库(IBaseRepository),获取此基本存储库的实例并像这样使用它
public class Service1 : IService
{
private IBaseRepository<T> _baseRepository;
public …Run Code Online (Sandbox Code Playgroud) 我有一个单页应用程序,需要调用各种 Web 服务和/或 API。我想了解从 SPA 进行 api 或服务调用的普遍认可的方法是什么。目前我们有两种方法
对于某些第 3 方 API - 我们从单页应用程序直接调用,无需服务器端代理。为了实现这一点,我们启用了 CORS。
对于其他 API 调用 - 我们调用代理(包装器),该代理负责将它们重定向到适当的端点。
我们决定使用哪种方法的方式是 - 如果在调用第 3 方 API 之前需要某种数据操作 - 我们使用代理 - 否则我们直接从 SPA 进行调用。这是一个有效的方法吗?从安全角度来看,第一种方法是否可靠,您有什么反馈吗?在第一种方法中,我们有一个仅 http 的 cookie,它被用作访问令牌来调用第 3 方 api。这是否会使我们公开的 API 变得脆弱?
提前致谢
architecture ×1
asp.net ×1
c# ×1
c#-4.0 ×1
cqrs ×1
events ×1
generics ×1
iis-7 ×1
static-html ×1
versioning ×1