簡體   English   中英

為什么WCF wsHttpBinding Timestamp是可選的?

[英]Why is the WCF wsHttpBinding Timestamp optional?

我們有一個使用wsHttpBinding的WCF服務。 我生成的示例請求包括一個時間戳,該時間戳已由WCF針對每個請求進行了驗證:

  <u:Timestamp u:Id="_0">
    <u:Created>2013-11-02T16:58:24.575Z</u:Created>
    <u:Expires>2013-11-02T17:03:24.575Z</u:Expires>
  </u:Timestamp>

最近,我們對該服務進行了筆測試,測試人員注意到可以省略timestamp元素,並且無需它就可以接受請求。

我正在查看報告,並為此添加解釋。 不幸的是,我進行了很好的搜索,但是找不到任何可以解釋甚至提及它的資源。

所以我的問題是:

  1. 為什么這是可選的?
  2. 如果我被問到,是否可以強制設置時間戳記?

這是服務綁定配置:

 <wsHttpBinding>
    <binding name="usernameHttps" maxReceivedMessageSize="2147483647">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName" establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>

這是客戶端綁定配置:

<wsHttpBinding>
    <binding name="WSHttpBinding_IService" maxReceivedMessageSize="2147483647">
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="None" />
        <message clientCredentialType="UserName" establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>

從MS論壇上得到了答案

  1. 為什么這是可選的?

時間戳是可選的,因為必須對它采取行動,它來自MSDN http://msdn.microsoft.com/zh-cn/library/ms977327.aspx

“通過了解創建和到期時間,接收者可以決定數據是否足夠新以供自己使用,或者數據是否過時以至於消息應被丟棄。”

  1. 如果我被問到,是否可以強制設置時間戳記?

是的,如上所述,這是您的服務邏輯所需要的,最簡單的方法是在WCF處理管道中添加一個攔截器,該攔截器將檢查此標頭,如果找不到,則會引發錯誤http://msdn.microsoft.com /zh-CN/magazine/cc163302.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM