背景

这个问题是在两个部分。

我在IIS 6承载单向WCF操作下面的是我是如何工作的理解:

  

_1。 IIS接收到一个请求。

     

_2。 IIS发送HTTP 202响应(感谢,我将处理此更高版本)。

     

_3。 IIS叫我的单向WCF操作。

现在控制进行到我的WCF操作其执行以下操作:

  

_4。持续的请求信息到事务,耐久存储。

     

_5。开始处理在OLTP数据库的请求。

     

_6。如果有错误,从步骤5重复,或者采取一些补救措施,则清除该数据持续在步骤4中。

问题1

时我当IIS发送HTTP 202响应的理解是否正确?

问题2

如果IIS步骤2和步骤4之间循环使用,我可能会失去请求信息,我已经改变坚持过,但客户端后,认为我已经接受了该消息。是否有由IIS大约当它会或不会在存在待决请求回收所提供的任何保证?


PS:请原谅躲闪格式。出于某种原因,降价是完全搞砸了我的编号列表项。

有帮助吗?

解决方案

我不知道你的假设是正确的。

即使对于单向交互,WCF可以得到非常返回202之前invovled;如果您使用的身份验证,例如,这一切都发生在调用该方法之前,并返回202之前,所以,如果有,他们可以报告任何问题。

如果您使用的wsHttpBinding,例如,开箱,你会看到,导致200 2-3消息交换的实际方法调用之前。这是交换安全性信息,并建立安全上下文。

诚然,如果你配置你的服务有没有保障,这将不会发生,它会立即返回202,但是这表明它必须知道它是否能够做到这一点从WCF堆栈。

所有这一切放在一边 - 我不知道你想达到什么样的 - 这IIS回收你指什么?我不是在IIS上所有的专家,但我怀疑这将回收的时候,某个正在积极运行的主机;如果你指的任何手动restrting应用程序池(或IIS,或机为此事),我怀疑有什么可以做。

如果你必须肯定知道消息是不是丢了,我知道,以机制保障是通过采用可靠的消息在这种或那种方式,只承认请求一次持久商店坚持的唯一途径;

其他提示

在我看来,有一对夫妇的事情,我会建议:

这是我所知道的在IIS管理流程再造的唯一方法是看你的网站使用的应用程序池。如果你打开IIS管理器 - >应用程序池 - >选择您的池,然后用鼠标右键单击属性,回收选项卡上有在那里的选项,可以帮助你。我想这并不能保证你不会在再循环失去的请求,但设定一个较长的时间减少这种情况的概率。

然而,这听起来像那种你希望建立制度是MSMQ的理想选择,它可以提供与极少的开销或手动管道正常排队的异步服务请求。这将让你完全避免整个过程回收的问题。我不知道这是为您的方案的选择,但它可能是寻找到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top