首页 > 解决方案 > BizTalk - JSON Post WebService 导致 500 内部服务器错误

问题描述

我在 BizTalk 中要求将数据发布到 Web 服务。这些数据需要采用 JSON 格式——一旦发布,我希望得到相同格式的内容,但在收到任何内容之前,我一直遇到同样的问题。我花了大约一天的时间试图弄清楚它 - 我很确定它一定是我忽略的一些愚蠢的东西。

我已经使用 Postman 检查了端点,并且直接发布数据时没有问题。

我收到的错误如下;

xlang/s 引擎事件日志条目:未捕获的异常(请参阅下面的“内部异常”)已暂停服务“Orchestrations.STANDARD_OUT_WEBSERVICE(a064e1ce-3aec-fa09-9ceb-76b4447793a2)”的实例。服务实例将保持挂起状态,直到以管理方式恢复或终止。如果恢复,实例将从其上次持久状态继续,并可能重新引发相同的意外异常。InstanceId:3766050c-3a20-44e0-ae96-5137ab9ce270 形状名称:ShapeId:异常从:段-1,进度-1 内部异常:处理消息时发生错误,请参阅详细信息部分以获取更多信息消息ID:{ ABD1094C-826C-42D6-8776-AE28044B9BBC} 实例 ID:{FC678BF5-BF84-4069-8385-00D0FD3547AE}错误描述:System.Net.WebException:(500)Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult 结果)的内部服务器错误异常类型:XlangSoapException 源:Microsoft.XLANGs.BizTalk.Engine 目标站点:Void VerifyTransport(Microsoft.XLANGs.Core.Envelope, Int32, Microsoft.XLANGs.Core.Context) 以下是标识异常位置的堆栈跟踪发生在 Microsoft.XLANGs.Core.Subscription.Receive(Segment s, Context ctx, Envelope& env, Boolean topOnly) 在 Microsoft.XLANGs 的 Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.VerifyTransport(Envelope env, Int32 operationId, Context ctx) Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& 的 Orchestrations.STANDARD_OUT_WEBSERVICE.segment1(StopConditions stopOn)经验)

消息的大致路线如下:Orchestration 1 进行一些翻译,然后以 XML 格式(使用 Xml Transmit)将消息发送到 Orchestration 2。Orchestration 2 接收 XML 格式(使用 Xml Receive)消息并使用它来构建一个新的JSON 格式的消息。

HeaderBuild = @"Content-Type:application\json" + "\n" + "UserName:biztalk-service";
Endpoint = "https://www.example.com/update";
ScaleWebserviceULOut(Microsoft.XLANGs.BaseTypes.Address) = Endpoint;
ScaleWebserviceULOut(Microsoft.XLANGs.BaseTypes.TransportType) = "WCF-WebHttp";
InboundMessageWithHeaders = InboundMessage;
InboundMessageWithHeaders(WCF.Action) = Endpoint;
InboundMessageWithHeaders(WCF.SecurityMode) = "Transport";
InboundMessageWithHeaders(WCF.HttpMethodAndUrl) = "POST";
InboundMessageWithHeaders(WCF.HttpHeaders) = HeaderBuild;

然后将此消息推送到动态发送接收端口,该端口在请求上使用自定义 JSON 编码器管道,当前在响应上使用 XML 接收(因为目前我什至没有达到这一点)。

消息毫无问题地路由到端口,并且肯定会转换为 JSON。我在这个上搜索得很辛苦,我不确定我做错了什么。有任何想法吗?

标签: c#jsonwcfbiztalkbiztalk-orchestrations

解决方案


事实证明,我收到此错误的原因是......

HeaderBuild = @"Content-Type:application\json" + "\n" + "UserName:biztalk-service";

此内容类型不正确 - 将其更改为正斜杠解决了该问题。

应用程序/json

感谢 ste-fu 将我指向 fiddler


推荐阅读