2011-06-03 33 views
1

我爲XmlHttp結果我有一個很奇怪的問題,我的web服務:ASP.NET Web服務:一個呼叫在double'd請求

  • 其典型的/標準ASP.NET(V4)web服務,通過GET調用beeing。

  • 一切工作正常,但今天我做了跟蹤,因爲我這個HTTP模塊中設置了customn HTTP模塊

  • 我把一些記錄通話,在開始/結束請求

  • 查看日誌的時候,我可以看到,如果我的服務被調用一次(由客戶JS-法),實際上是兩個請求完成的WebService

(HTTP的模塊也會爲標準ASP.NET的WinForm頁面,我有沒有這個問題 - 它只發生在調用web服務的情況下)

有沒有人有一個想法是什麼會導致這個問題?

回答

0

重定向可能導致此行爲,例如,在非斜槓URL的末尾添加斜槓。而且,許多認證方案可能需要兩個請求。如果我在你的鞋子裏,我會看看這兩個請求的內容和標題,看看裏面有什麼。

此外,您可能希望在客戶端上運行Fiddler(或任何其他網絡跟蹤程序,如Firebug或IE開發工具欄)以驗證客戶端是否實際發出兩個請求。這可能是因爲你在HttpModule中的日誌代碼可能位於多個調用是自然的地方(例如一次用於標題,一次用於正文)。

+0

賈斯汀嗨叫了兩聲,與產生額外的斜槓請求的結尾看起來像'http://localhost/XRSF.asmx/RMG?Param1 = 0&Param2 = 0 /' - 使得服務崩潰...提琴手,行 - 我會嘗試作爲下一個選項! – johngrinder 2011-06-03 17:42:40

+0

OK,正如你所建議的那樣,我嘗試了Fiddler - 事實上,它只顯示每個web服務調用的一個請求...奇怪,所以它必須在http模塊中 - >我怎樣才能找到更多關於你的第二個提示,關於通過http模塊進行多次運行的地方是否很自然?我在'PreRequestHandlerExecute'和'PostRequestHandlerExecute'中做了http-module loggin的東西 - 看起來這兩個請求都是級聯的,因爲在第一次調用''Pre'Execute'之前,我有兩個調用'Pre ... Execute' Post ... Execute'被調用。任何其他想法? Thx – johngrinder 2011-06-03 18:14:22

+0

好的,一些進一步的調查顯示,它似乎是在請求調用中保持活力的東西。 – johngrinder 2011-06-03 18:32:53

0

OK, 這不是最終的解決方案,但一個很好的解決辦法:

的問題是:

  • 在客戶機的JS-調用Web服務模塊的情況下,該功能執行兩次,因爲模塊運行兩次:一個用於CurrentHandler == TransferRequestHandler,第二個調用(其中會話狀態可用)然後由CurrentHandler處理== Script/ASPX/Handler

  • 我不知道(直到現在)最新的原因,但我解決它只是通過返回/不執行我的HttpModule特定的東西在第一次運行

  • 所以,它工作正常,但我仍然在尋找一個解釋,爲什麼HttpModule PreExecute/PostExecuteRequestHandler在一個WebService通話的情況下打了兩次,而這是不單/標準ASP.NET頁面請求

問候