我有以下情况:
总的来说,这种设置效果很好。但是,我们正在调用需要基本身份验证的第三方REST服务,并且我们正在使用RestSharp来调用该服务。该代码的一个示例是:
Dim url As String = ServicePrefix & ServiceBaseAddress
Dim client As New RestSharp.RestClient(url)
client.Authenticator = New HttpBasicAuthenticator(AccountSID, AuthToken)
Dim request As New RestSharp.RestRequest("Accounts/" & AccountSID & "/SMS/Messages.xml", RestSharp.Method.POST)
request.AddParameter("From", fromPhone)
request.AddParameter("To", toPhone)
request.AddParameter("Body", message)
syncContext = SynchronizationContext.Current
Dim ia = client.ExecuteAsync(request, AddressOf HandleSMSResponse)
在第三方服务的调用成功返回并且我们的消息被发送后,Silverlight不再在HttpContext中发送正确的用户,因此WCF服务不再识别表单身份验证用户。
我们目前的想法是,RestSharp正在控制某些不应该或不能正常恢复状态的东西。有谁知道安全凭证存储在Silverlight中的哪个位置,以便我们可以在RestSharp调用之前获取它们并在之后恢复它们?
感谢您的投入!
答案 0 :(得分:0)
Chirp * chirp *蟋蟀在这里很响亮。
无论如何,我们最终提出的解决方案是将所有调用第三方REST服务的调用转移到我们自己的服务中。这使得Silverlight不会失去其对我们服务的凭据(因为我们从未在Silverlight上调用其他服务)。
我希望有一天能帮助那些偶然发现这一点的人。