我不完全确定这是否属于SO,但我不知道还有什么要问的.
当我检查我的网络应用程序的加载速度时,我注意到显然没有HTTP响应(无论什么类型 - html,css,js)是压缩gzip/deflate.也就是说,任何请求中都不存在像"Content-Encoding:gzip"这样的响应标头,并且浏览器报告资源未被压缩.
以下是响应标头的示例(请注意缺少内容编码标头):

我还检查了服务器端.服务器正在运行Windows Server 2008 R2/IIS 7.5.我使用Failed Request Tracing查找服务器发送的内容.资源似乎是压缩的:

此外,服务器似乎发送正确的标头:

我的结论是:必须是Windows 8谁在这里进行干预.显然它修改了HTTP响应.我想Windows 8正在接收压缩响应,对其进行解压缩,删除内容编码头并将修改后的响应传递到管道下方.
现在我的问题:
提前感谢您的回答.
问候,安德烈
更新:我使用Wireshark查看到达客户端的内容.正如我所料,资源被压缩,内容编码头仍然存在.下图显示了wireshark协议,右下角显示了Chrome收到的响应.

这证实了我的假设,即Windows 8正在介入.
我正在开发一个存储图像和相关元数据的应用程序.我在使用NHibernate执行某个查询时遇到了问题.查询花费了太长时间(在我的机器上大约31秒),尽管在SQL Server Management Studio中执行时相同的查询只需要几分之一秒.
我已经将问题简化并解决了一个小的测试应用程序:
实体:
标记,由Id组成(字符串,标记值本身)
public class Tag
{
public virtual string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
图像,包括Id(int),Name(字符串)和标签(多对多,Tag实例集)
public class Image
{
private Iesi.Collections.Generic.ISet<Tag> tags = new HashedSet<Tag>();
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IEnumerable<Tag> Tags
{
get { return tags; }
}
public virtual void AddTag(Tag tag)
{
tags.Add(tag);
}
}
Run Code Online (Sandbox Code Playgroud)
我使用"按代码映射"使用以下映射:
public class TagMapping : ClassMapping<Tag>
{
public TagMapping() …Run Code Online (Sandbox Code Playgroud) 我有一个[4,4]
X 阵列是唯一一个我"知道"的,其余的是用简单的双循环计算的.
x 0 0 0
0 0 1 0
0 1 1 0
0 1 0 0
Run Code Online (Sandbox Code Playgroud)
我想要一个采用这个数组的函数,并将其旋转90度+/ - 而x的位置保持不变.(它应该是俄罗斯方块)
x 0 0 0
1 1 0 0
0 1 1 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我知道某些方法来对这些排列进行硬编码,但这对我来说什么都不会学到什么,坦率地说这很无聊.
非常感谢帮助:>
在过去几年中使用Ninject,Castle Windsor和其他IoC容器之后,我目前正在一个新的ASP.NET MVC项目中尝试使用Autofac。因此,尽管我大致了解IoC容器,但我对Autofac还是陌生的,我仍在寻找一些最佳实践。
当前,我正在尝试找出是否有一种方法可以解决最内层的嵌套作用域。
我遇到以下情况:注册为SingleInstance()的组件具有创建嵌套生存期范围的方法,该方法提供配置操作以将某些组件配置为InstancePerLifetimeScope,并在此嵌套范围内解析已注册的组件以执行有用的操作,像这样:
ILifetimeScope currentScope = ???;
using (var scope = currentScope.BeginLifetimeScope(cb => {
cb.RegisterType<X>().InstancePerLifetimeScope();
// ...
}))
{
var comp = scope.Resolve<X>();
// ...
}
Run Code Online (Sandbox Code Playgroud)
问题是我希望currentScope成为最内部的生存期范围,因为我知道X取决于最内部的范围内的组件。在最简单的情况下,例如当前请求生存期范围。我当然可以通过AutofacDependencyResolver.Current.RequestLifetimeScope来获取它,但是我不想使用它,因为它并不是很好的测试工具。而且,该生存期范围不一定是最内层的。
因此,有没有办法找到给定的最内部生命周期范围,例如根容器或其他ILifetimeScope?
对于在 SQL Server Express 2012 上运行的数据库中的特定列,我需要在比较字符串时将 ss 和 ß 视为不同的排序规则。此外,ä 和 ae、ö 和 oe 以及 ü 和 ue 应该分别被认为是不同的。Latin1_General_CI_AS 提供了后者,但不区分 ss 和 ß。也就是说,WHERE ThatColumn = 'Fass'会同时产生Fass和Faß。
我会简单地坚持 BIN/BIN2,但我需要不区分大小写。如果没有其他工作,我将不得不使用 Latin1_General_BIN/Latin1_General_BIN2 并确保自己的所有内容都是大写或小写。这将意味着更多的工作,因为我还需要能够检索具有适当大小写的版本。
但是,如果有符合我需要的整理,请告诉我。提前致谢!
更新:有关要求的更多信息:数据库包含来自仅支持 ASCII 字符的旧系统的个人姓名。也就是说,像 Müller 和 Faß 这样的名字被存储为 Mueller 和 Fass。在新系统中,用户将具有重命名这些人的功能,例如将“Mueller”重命名为“Müller”。要找到需要重命名的实体,我需要搜索包含例如“Fass”的行。但是现在查询也返回“Faß”,这不是我想要的。我仍然需要/想要不区分大小写,因为用户应该能够搜索“fass”并仍然得到“Fass”。
该系统还有更多内容,但我可以肯定地说,我需要区分 ss 和 ß、ä 和 ae 等。
我目前处于多个相当复杂的系统的设计阶段,这些系统具有共同的功能(例如,它们都具有客户关系管理(CRM)和销售功能).因此,我试图提取域的公共部分并在两个应用程序中重用它.
假设我有应用程序A和应用程序B,都使用CRM功能.在大多数情况下,CRM功能是相同的,但两个应用程序都喜欢增加与CRM相关的一些东西.
我想创建一个实现CRM系统基本版本的库,例如客户被抽象化
interface ICustomer {
string CustomerNumber {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并且基础库具有ICustomer的基本实现
class Customer: ICustomer
Run Code Online (Sandbox Code Playgroud)
应用程序A现在可以增加这个:
interface IACustomer : ICustomer {
bool ReceivesNewsletter {get;set;}
}
class ACustomer : Customer, IACustomer {
...
}
Run Code Online (Sandbox Code Playgroud)
同样,B有自己的变体:
interface IBCustomer : ICustomer {
string NickName {get;set;}
}
class BCustomer : Customer, IBCustomer {
....
}
Run Code Online (Sandbox Code Playgroud)
出于抽象的目的,我从不在基础库中实例化具体类型,而是使用工厂或DI容器,例如:
interface ICrmFactory {
ICustomer CreateCustomer();
}
Run Code Online (Sandbox Code Playgroud)
A和B相应地实施工厂,以便分别产生ACustomers或BCustomer.
这是我的意思的UML图(应用程序B未显示):

对于持久性,我使用NHibernate.A和B都提供自己的映射(按代码映射)以包含额外的属性.此外,A将IACustomer定义为ACustomer的代理类型,B将IBCustomer定义为BCustomer的代理类型.
我现在可以使用NHibernate来处理A和B中的实体,例如在A中
session.QueryOver<ACustomer>()
.Where(c=>c.ReceivesNewsletter)
.List()
Run Code Online (Sandbox Code Playgroud)
现在让我们说我想在基础库中对客户做一些事情(例如在某种服务对象中).我只是原型一个非常简单的版本,到目前为止这似乎工作正常:
session.QueryOver<ICustomer>()
.Where(c => c.CustomerNumber == "1234ABC")
.List()
Run Code Online (Sandbox Code Playgroud)
也就是说,我可以在QueryOver中使用特定实体的代理类型的基类,并且NHibernate创建正确的查询,例如在A:
SELECT
this_.Id as Id0_0_,
this_.CustomerNumber as Customer2_0_0_, …Run Code Online (Sandbox Code Playgroud) c# ×2
asp.net-mvc ×1
autofac ×1
collation ×1
http ×1
http-headers ×1
matrix ×1
nhibernate ×1
ninject ×1
rotation ×1
sql ×1
sql-server ×1
windows-8 ×1
xna ×1