1

我有一个 WCF 网络服务。我需要利用 SOA Web 服务。我用 WSDL 文件创建了 Reference.cs。一切似乎都很好,但 SOA 服务期望带有 Token 的自定义标头,包括用户名\密码。SOA 团队只给出了用户名\密码来传递标头。现在如何更改 SOAP 标头以在 c# wcf 中传递身份验证令牌?

这是 SOA 期待 SOAP 内容

<message>
<properties>
<property  name="tracking.compositeInstanceId"  value="160008"/>
<property  name="tracking.ecid"  value="ef41c1acc87d807b:47c8a7e5:13aba83ab3c:-8000-000000000006d79c"/>
<property  name="transport.http.remoteAddress"  value="10.100.21.228"/>
</properties>
<headers>
<header>
<wsse:Security  soap:mustUnderstand="1">
<wsse:UsernameToken  wsu:Id="UsernameToken-njZlxs5jA9tMZ9zdXhHIaw212">
<wsse:Username>meuser</wsse:Username>
<wsse:Password  Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">welcome123</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</header>
</headers>
<parts>
<part  name="request">
<ns1:DoT_GIS_Inbound_Input>
<ns1:InterfaceID>DOT_CRM_GIS_SBL_003</ns1:InterfaceID>
<ns1:ContactFirstName>Fname</ns1:ContactFirstName>
<ns1:ContactLastName>LName</ns1:ContactLastName>
<ns1:ComplaintType>Parking</ns1:ComplaintType>
<ns1:RequestType>Complaint Request</ns1:RequestType>
<ns1:Phone>5555555</ns1:Phone>
<ns1:ReportedDate>12\12\2012</ns1:ReportedDate>
<ns1:UniqueID>ddffketto7878998</ns1:UniqueID>
<ns1:Email>anji@yahoo.com</ns1:Email>
<ns1:Description>description text</ns1:Description>
</ns1:DoT_GIS_Inbound_Input>
</part>
</parts>
</message>

我的 WCF 服务的方法如下

public string CreateComplaintInCRM(string TYPE, string DESCRIPTION, string DATE_REPORTED, string EMAIL, string Phone, string Contact_Name, string UNIQUE_ID, string Contact_SName)
     {

                CRMCreateComplaint.DoT_GIS_Inbound_Input crmCreateObj = new CRMCreateComplaint.DoT_GIS_Inbound_Input();
                CRMCreateComplaint.execute_pttClient exeRec = new CRMCreateComplaint.execute_pttClient();

                crmCreateObj.InterfaceID = "DOT_CRM_GIS_SBL_003"; // CRM setting 
                crmCreateObj.RequestType = "Complaint Request"; //// CRM setting 
                crmCreateObj.ComplaintType = TYPE;//compalint type
                crmCreateObj.ContactFirstName = Contact_Name;
                crmCreateObj.ContactLastName = Contact_SName;
                crmCreateObj.Description = DESCRIPTION;
                crmCreateObj.Email = EMAIL;
                crmCreateObj.UniqueID = UNIQUE_ID;
                crmCreateObj.Phone = Phone;
                crmCreateObj.ReportedDate = DATE_REPORTED;

                //string COMPLAINTREFID = exe.execute(crmCreateObj);

                exeRec.execute(crmCreateObj);
                return "Referece ID:";
            }

我得到 InvalidSecurity : 处理 WS-Security 安全标头时出错。

有任何 C# 中的 SOA 开发人员有同样的问题吗?非常感谢您的帮助和指导。

我浏览了很多文档和文章,但没有任何帮助

4

0 回答 0