Использование.NET 4.0 WCF для подключения к WSE 2.0 WebService с помощью user/pass
Я надеялся, что ты поможешь мне. Я пытаюсь подключиться к стороннему веб-сервису, который, к сожалению, является сервисом WSE 2.0. Я пытаюсь написать клиент в C# .NET 4.0 с помощью WCF. Мне не повезло найти какую-либо информацию по этому вопросу. Сервису требуется строка для имени пользователя и пароля. Вот как выглядит их образец
Using webServiceObject As Microsoft.Web.Services2.WebServicesClientProtocol = New WSOData.Webservices.TransactionWebService()
https = ConcatenateWebserviceAddress(request.Server.Https, request.Service.Extension)
epr = New EndpointReference(New Uri(https))
webServiceObject.Destination = epr
Dim WebserviceContext As SoapContext = webServiceObject.RequestSoapContext
''''' Set the security settings
' Set the timeout value for how long issued SecurityContextToken security tokens are valid
WebserviceContext.Security.Timestamp.TtlInSeconds = -1
'Instantiate a new UsernameToken object.
Dim userNameToken As New UsernameToken(userName, password, PasswordOption.SendHashed)
'Add the token to the SoapContext.
WebserviceContext.Security.Tokens.Add(userNameToken)
'Generate a signature using the username token, and add the signature to the SoapContext.
WebserviceContext.Security.Elements.Clear()
WebserviceContext.Security.Elements.Add(New MessageSignature(userNameToken))
Есть ли способ сделать это с помощью WCF в.NET 4.0? Я действительно не хочу прибегать к использованию WSE 2.0, если смогу помочь. У меня также нет контроля над сервисом, к которому мы подключаемся. Буду признателен за любую помощь, я ни в коем случае не эксперт или новичок WCF в этом отношении.
заранее спасибо
2 ответа
Теоретически, вы, вероятно, можете создать правильные расширения и поведения, чтобы WCF мог производить и потреблять мыло WSE 2.0, но здесь вы сами по себе. Существует некоторое взаимодействие между WSE 3.0 и WCF, как описано в этом сообщении в блоге. Вы можете использовать его в качестве отправной точки для работы со службой WSE 2.0.
Возможно, вам лучше работать непосредственно с исходными компонентами WSE 2.0, если вы сможете найти копию Visual Studio 2003. Я смутно помню, что в WSE 2.0 имеется 3 пакета обновления, которые не были обратно совместимы, поэтому вам следует убедиться, что вы используете правильный пакет обновления., Удачи и наилучших пожеланий!:)
Я не рекомендую вам использовать WSE2. В худшем случае - когда Wcf не может взаимодействовать с этим сервисом - вам лучше создать заголовок имени пользователя самостоятельно, это не так уж сложно. Но для определения наилучшего способа, пожалуйста, опубликуйте полный образец рабочего мыла (поставщик должен его предоставить)