簡體   English   中英

WCF IIS Web 服務奇怪的間歇性結果

[英]WCF IIS Web Service Strange Intermittent Results

我正在將 IIS 中托管的 WCF Web 服務從舊服務器遷移到新服務器。

在新服務器(Windows 2019)上,我執行了以下步驟:

  • 在 IIS 中創建網站和應用程序池
  • 已安裝 SSL 證書
  • 添加了站點綁定(http 和 https)
  • 將項目文件(DLL、SVC、Web.Config)復制到文件夾

該文件夾位於inetpub/wwwroot 下

舊服務器上的 Web 服務工作正常,唯一的區別是新服務器的域名和 IP 地址不同。

我可以通過調用https://www.example.com/TestConnect.svc/basic?singleWsdl來獲取 mex 元數據

當我使用 Postman(或 Chrome)測試服務時,我得到了奇怪的結果。 調用其中一種方法會返回正確的結果(整數值)。 然后我調用另一個應該返回 List<myClass> 的方法,我收到一條錯誤消息“無法獲得任何響應”。 Chrome 錯誤顯示:“無法訪問此站點。無法找到 www.blah.com 的服務器 IP 地址。”

似乎沒有防火牆問題,身份驗證或 SSL 證書也沒有問題,因為成功調用通過 https 返回結果並使用用戶名和密碼進行身份驗證。

我可以在IIS 日志中看到成功的請求如下:

GET /TestConnect.svc/json/GetNoteCount token=blahblah 443 TestAPI xxx.xxx.xxx.xxx PostmanRuntime/7.24.1 - 200 0 0 844

每個 Web 請求都應顯示在 IIS 日志中,但如果沒有,則該請求可能從未發送到 IIS。 明知請求到服務器通過HTTP.SYS被移交給IIS之前首先路由,我查了HTTPERR日志在C:\\ WINDOWS \\ SYSTEM32 \\ LogFiles文件\\ HTTPERR

果然失敗的請求不在 IIS 日志中,而是在 HTTPERR 中,如下所示:

2020-10-13 11:11:55 xxx.xxx.xxx.xxx 61134 xxx.x.xx.xxx 443 HTTP/1.1 GET /TestConnect.svc/json/GetNotes?token=blah&search=banking - - 3 Request_Cancelled TestAPI

“s-reason”列顯示 Request_Cancelled。

我不明白為什么請求失敗。 任何人都有這方面的經驗或任何建議是什么導致它失敗?

在跟隨 Lex Li 對另一個溢出問題的引用之后,我發現了如何獲得更詳細的錯誤消息。 這是我發現的錯誤消息:

System.Runtime.Serialization.SerializationException:轉換為 UTC 時大於 DateTime.MaxValue 或小於 DateTime.MinValue 的 DateTime 值無法序列化為 JSON。 System.ArgumentOutOfRangeException:指定的參數超出有效值的范圍。

我正在調用的方法返回一個集合列表。 此列表中的字段之一是 DateTime(不是 DateTime?),並且代碼未填充此字段,這會導致日期時間值無效且無法序列化為 JSON。

我認為我之前沒有遇到此錯誤的原因是因為我通過 C# 客戶端生成的代理使用 Web 服務,該代理使用 XML 而不是 JSON。

暫無
暫無

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

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