通过HTTPS和PUT模式从BizTalk中的动态发送端口消耗WCF服务



我想通过biztalk编排动态端口在https连接上消耗put wcf服务。

XMLDocumentOutput(WCF.MaxReceivedMessageSize)= 2147483647;
XMLDocumentOutput(WCF.HttpMethodAndUrl) = @"<BtsHttpUrlMapping>  <Operation Name='RestPUT' Method='PUT'  /> </BtsHttpUrlMapping>";
XMLDocumentOutput(WCF.TransportClientCredentialType) = "Transport";
XMLDocumentOutput(WCF.SecurityMode)="Transport";
XMLDocumentOutput(WCF.UseSSO) = false;
XMLDocumentOutput(WCF.HttpHeaders) = "Authorization: Basic AbScSfKajfsalAbScSfKajfsalAbScSfKajfsal=";
PortName(Microsoft.XLANGs.BaseTypes.Address) = "https://example.com/url/url2";
PortName(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-WSHttp";

url:https://example.com/url/url2方法:put

我无法消耗服务并获得以下错误 HTTP请求未经授权使用客户端认证方案"协商"。从服务器收到的身份验证标头是"。 找不到HTTP auth标题

服务器正在使用基本身份验证。

谢谢

我最终调用了C#方法并制作httpwebrequest。仍然想知道是否有人对此有爱。

自发布问题以来,您是否解决了问题?我认为您需要替换:

XMLDocumentOutput(WCF.HttpMethodAndUrl) = @"<BtsHttpUrlMapping>  <Operation Name='RestPUT' Method='PUT'  /> </BtsHttpUrlMapping>";
XMLDocumentOutput(WCF.TransportClientCredentialType) = "Transport";

with:

XMLDocumentOutput(WCF.Action) = "PUT";
XMLDocumentOutput(WCF.TransportClientCredentialType) = "Basic";

如果您要使用BizTalk Server管理控制台对话框,WCF-WSHTTP或其他方式手动配置非动态发送端口,您将看到对话框标签将与"编排表达式"对话框中的WCF属性匹配。

不确定是否应该使用wcf.httpheaders添加基本的AUTH凭据,因为Admin Console Dialog不会公开此。

您可能需要使用

XMLDocumentOutput(WCF.UserName) = "<username here>";
XMLDocumentOutput(WCF.Password) = "<password here>";