2010-05-14 96 views
0

我正在将旧的asmx webservice移动到带有IIS7的新服务器。
这个web服务基本上发送一个大数据集(10mb +)到一个winform应用程序。
旧的解决方案是使用自定义soap扩展实现的,该扩展在将流发送到客户端之前压缩了内容。
客户端当然实现了相同的自定义soap扩展,以解压缩数据集中的流。 一切都很好,多年来工作。
我的客户不想更改升级到WCF的代码。他们只想将旧应用程序放在新服务器上,并使用新的动态内容压缩功能。
我们在测试服务器上测试了一些东西(win serv 2008),看起来它工作得很好,即使它看起来很慢:我们看不到未压缩和压缩的流之间的性能(速度)差异。
下面是问题。我应该在哪里放置设置?大多数人说我不能把它放在我的web.config中;别人说可以放在那里。我有点困惑。
有什么技巧或我应该知道的事情吗? mimeTypes呢?我应该设置一些参数吗?考虑到我的流是XML(数据集)??IIS7动态内容压缩和web服务

回答

1

假设你可以很容易地禁用你的压缩代码,那么使用IIS7压缩功能非常简单。

您可以使用IIS7中的web.config在文件夹级别启用和禁用压缩。

但是,控制哪些mimetypes被压缩而哪些不被存储在web服务器级别的配置。

要在给定site/vdir /文件夹上启用动态压缩(假设服务器安装了动态压缩功能),只需在IIS管理器中打开您的站点/文件夹,然后点击'压缩'图标即可。在这里,您可以启用静态和动态压缩。

在这一点上,检查它是否工作(即流量确实被压缩)。如果是这样,那么默认的动态压缩配置的工作,如果没有,那么你需要,你可以去抓住和早午餐:)

  • 单击服务器节点(在根)在IIS管理器中。然后打开'配置编辑器'(位于最下面一行,通常位于左侧)。
  • 在出现的窗体的下拉列表中,展开system.webserver节点,然后单击'httpCompression'叶节点。
  • 现在您将看到所有服务器范围的压缩配置选项 - 您需要打开'dynamicTypes'设置。
  • 在那里你可以为你需要压缩的mimetypes添加额外的规则。

一两件事,这是一个有点讨厌这个的是,MIME类型都完全匹配,有时默认规则将不会匹配你想要的一切。

我举个例子,增加了4个额外的规则,我们的服务器:

  • 应用/ JSON
  • 应用程序/ XML

然后:

  • 应用/ JSON; charset = utf8
  • application/xml; charset = utf8

因为某些原因,我发现我的来自.Net的json/xml响应的mimetype在末尾有这个额外的'charset ='位。如果确实如此,并且它不在规则列表中,那么IIS7压缩将无法启动。让我度过这段时间(以及很多Fiddler的使用!)来弄清楚这一点!

+0

感谢您的回复Andras。 当你在谈论“配置编辑器”时,你的意思是你安装AdministrationPack时的那个,对吗? 因此,基本上,对于你所说的,没有办法在网站级别进行设置。如果我想针对不同的网站/虚拟网站有不同的行为,我无法使用我的web.config;那是对的吗? 谢谢 – LeftyX 2010-05-14 12:46:21

+0

@vandalo - 抱歉延误。我不确定是否需要管理包......我所知道的是,在安装IIS之后(确保我在功能中启用了静态和动态压缩选项)后,这些选项在IIS管理器中可用。至于不同的站点/虚拟站点级别 - 您可以简单地通过web.config在单个文件夹(因此站点和虚拟文件夹)上打开和关闭压缩;但动态压缩的内容类型只能在服务器级别配置。 – 2010-05-27 11:11:34