簡體   English   中英

將WCF服務與控制台應用程序一起使用

[英]Consuming a WCF Service with a Console Application

我在C#控制台應用程序中使用WCF服務時遇到問題。

這是我用來消費服務的代碼。

 WCFServiceReference.WCFInterfaceClient client = new WCFInterfaceClient(); try { WCFInterface x = client.WCFInterface(); } catch (Exception ex) { Console.WriteLine(ex); } 

WCF接口代碼

 public interface WCFInterface { [OperationContract] WCFInterface WCFInterface(); } [DataContract] public class WCFInterface { [DataMember] public string URI1 = ""; [DataMember] public string URI2 = ""; [DataMember] public string URI3 = ""; } 

然后,這會在服務中生成以下錯誤

“解析值時遇到意外字符:<。路徑”,第0行,位置0。”


異常詳細信息:

{一個ExceptionDetail,可能由IncludeExceptionDetailInFaults = true創建,其值為:

Newtonsoft.Json.JsonReaderException:解析值時遇到意外字符:

<。 路徑'',第0行,位置0。

在Newtonsoft.Json.JsonTextReader.ParseValue()

在Newtonsoft.Json.JsonTextReader.ReadInternal()

在Newtonsoft.Json.JsonTextReader.Read()

在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader閱讀器,JsonContract合同,布爾hasConverter)

在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)中

在Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)

在Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,類型,JsonSerializerSettings設置)

在Newtonsoft.Json.JsonConvert.DeserializeObject [T](字符串值,JsonSerializerSettings設置)

在Newtonsoft.Json.JsonConvert.DeserializeObject [T](String value)


我可以看到該錯誤正在我的服務中生成,我遇到的問題是我不知道為什么會觸發該錯誤。

當我運行該服務並使用Visual Studio中的“測試客戶端”手動調用該服務時,不會產生錯誤,並且該過程成功完成。

我會大膽猜測,說您的內容不是JSON,而是HTML或XML / SOAP,因為<字符為0、0? 您可以確認響應格式是什么嗎?

創建客戶端存根后,您是否更改了服務的響應格式?

根據您的服務類型,項目類型和.NET Framework版本,您可以通過幾種方法來完成此操作。

嘗試使用WebInvoke屬性將RequestFormat硬編碼為JSON:

 [WebInvoke(Method = "GET",
       RequestFormat = WebMessageFormat.Json,
       ResponseFormat = WebMessageFormat.Json)]

您還可以使服務自動檢測並支持JSON和SOAP:

http://blogs.msdn.com/b/endpoint/archive/2010/01/18/automatic-and-explicit-format-selection-in-wcf-webhttp-services.aspx

但是,對我來說,這不是解決方案,而只是健全性檢查。

真正的問題是,為什么部署時它會改變?

部署時格式發生更改的事實告訴我,要么環境配置不同,要么您沒有針對開發服務測試控制台應用程序。 在您說的問題中,您正在使用Visual Studio測試客戶端。 在本地主機上嘗試您的控制台應用程序。 另外,您部署了web.config還是在已經存在的web.config下運行? 您是否檢查過是否存在差異?

我最終弄清楚發生了什么事。

我的控制台應用程序正在調用WCF服務,而這反過來又消耗了Web API。

Web API返回的錯誤消息格式不是WCF服務所期望的格式。

通過遵循此答案,我能夠解決我的問題,我知道這似乎與我的原始問題大不相同,但這就是我的控制台應用程序收到的內容。 通過跟蹤錯誤,我能夠確定該錯誤實際上是由我的WCF服務生成的,直到那時為止它一直在正常工作。

要求407代理身份驗證

暫無
暫無

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

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