gpt4 book ai didi

WCF JSON 服务在故障时返回 XML

转载 作者:行者123 更新时间:2023-12-04 02:21:43 25 4
gpt4 key购买 nike

我正在运行 ServiceHost 来测试我的一项服务,并且一切正常,直到我抛出 FaultException - 砰,我得到的是 XML 而不是 JSON

我的服务契约(Contract) - 可爱

   /// <summary>
/// <para>Get category by id</para>
/// </summary>
[OperationContract(AsyncPattern = true)]
[FaultContract(typeof(CategoryNotFound))]
[FaultContract(typeof(UnexpectedExceptionDetail))]
IAsyncResult BeginCategoryById(
CategoryByIdRequest request,
AsyncCallback callback, object state);

CategoryByIdResponse EndCategoryById(IAsyncResult result);

主机设置 - scrummy yum
var host = new ServiceHost(serviceType, new Uri(serviceUrl));
host.AddServiceEndpoint(
serviceContract,
new WebHttpBinding(), "")
.Behaviors.Add(
new WebHttpBehavior
{
DefaultBodyStyle = WebMessageBodyStyle.Bare,
DefaultOutgoingResponseFormat = WebMessageFormat.Json,
FaultExceptionEnabled = true
});

host.Open();

这是电话 - 哦,肚子疼
var request = WebRequest.Create(serviceUrl + "/" + serviceName);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = 0;

try
{
// receive response
using (var response = request.GetResponse())
{
var responseStream = response.GetResponseStream();

// convert back into referenced object for verification
var deserialiser = new DataContractJsonSerializer(typeof (TResponseData));
return (TResponseData) deserialiser.ReadObject(responseStream);
}
}
catch (WebException wex)
{
var response = wex.Response;

using (var responseStream = response.GetResponseStream())
{
// convert back into fault
//var deserialiser = new DataContractJsonSerializer(typeof(FaultException<CategoryNotFound>));
//var fex = (FaultException<CategoryNotFound>)deserialiser.ReadObject(responseStream);

var text = new StreamReader(responseStream).ReadToEnd();
var fex = new Exception(text, wex);

Logger.Error(fex);
throw fex;
}
}

文本 var 包含正确的错误,但序列化为 Xml
我在这里做错了什么?

最佳答案

答案是实现一个 IErrorHandler 和支持行为

我发现了 iainjmitchell 的这篇优秀帖子

http://iainjmitchell.com/blog/?p=142

关于WCF JSON 服务在故障时返回 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com