2014-09-10 3 views
0

У меня есть SOAP WebService, у которого есть авторизации, и мне нужно указать ClientCredentialType для HttpClientCredentialType.Basic.Windows Phone Silverlight 8.0 - указать ClientCredentialType для Basic на BasicHttpBinding

Я проект нормальный .NET я могу указать это (либо в коде или в XML) для подключения к WebService:

BasicHttpBinding binding = new BasicHttpBinding(); 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
mySoapClient = new MySoapClient(binding, address); 

Проблема заключается в том, что в портативном Class Library (PCL) или в ОС Windows Телефон 8.0 Silverlight C# project Свойство Transport не существует.

Есть ли обходной путь?

Thanks

ответ

0

Узнать ответ. Похоже, что все запросы должны выполняться в пределах OperationContextScope.

 private void InvokeWebMethod(Action webMethod, string username = null, string password = null) 
     { 
      using (OperationContextScope contextScope = new OperationContextScope(presenceServer.InnerChannel)) 
      { 
       var bc = Encoding.UTF8.GetBytes(string.Format(@"{0}:{1}", username ?? this.Username, password ?? this.Password)); 
       HttpRequestMessageProperty httpProps = new HttpRequestMessageProperty(); 
       httpProps.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(bc); 

       OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpProps; 
       webMethod(); 
      } 
     } 

ЧТЕНИЯ.

Смежные вопросы