wcf - 在 Windows Phone 7 上使用基于 SSL 的基本身份验证

标签 wcf silverlight-3.0 windows-phone-7 basic-authentication

我知道有人问过这个问题的变体,但我已经尝试了所有建议的解决方案,但都无济于事。我们正在尝试连接到使用基本身份验证和传输安全性的 WCF 服务(不幸的是,这些事情无法更改)。我一直无法找到一种方法将我们的凭据添加到 WCF 调用中的 TRANSPORT;所有解决方案似乎都是围绕向消息添加 header 。

我们最新的尝试是使用附有凭据的 HttpWebClient 从服务器获取文本文件,然后进行 WCF 调用;我们希望身份验证会...我不知道,从 HttpWebClient 跳转到 WCF 客户端(使用服务引用生成)。虽然第一个调用确实有效,但我们在 WCF 调用上收到了 CommunicationException(如果我深入研究响应,状态描述设置为未授权)。

有没有办法让客户端共享从成功尝试返回的授权 token ?这是傻瓜的差事吗?有没有更简单的方法来做到这一点,我也看不见?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("https://server/OGTE/api/WinPhone7.html"));

        request.Credentials = new NetworkCredential(_userName, _password, _domain);
        request.Method = "GET";

        request.BeginGetResponse((beginGetResponseResult) =>
        {
            try
            {
                HttpWebRequest requestWhileResponding = (HttpWebRequest)beginGetResponseResult.AsyncState;
                HttpWebResponse response = (HttpWebResponse)requestWhileResponding.EndGetResponse(beginGetResponseResult);

                try
                {
                    using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
                    {

                         string info = streamReader1.ReadToEnd();

                        Dispatcher.BeginInvoke(() =>
                                                   {
                                                       textblock.Text = info;
                                                   });

                    }

                    _userDataService.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(_userDataService_GetDataCompleted);
                    _userDataService.GetDataAsync("0C5696BB-2D15-4EA7-B198-5C12B3E23B63");

                }
                catch (Exception ex)
                {

                    Debug.WriteLine(ex.ToString());
                }

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
            }
        },

    request);
    }

最佳答案

另一种解决方案可以让您在调用 REST 服务时更轻松,使用 RestSharp .他们有一个 HttpBasicAuthenticator,你也可以创建自己的验证器。它还可以更轻松地为 REST 资源构建 uris。 这是一个 blog post关于针对 WCF REST 服务进行身份验证。您可以看到使用 RestSharp 的客户端示例代码

关于wcf - 在 Windows Phone 7 上使用基于 SSL 的基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146745/

相关文章:

mysql - Restful Web 服务中的搜索功能

c# - 访问应用程序成员?

silverlight - Silverlight App.xaml 中的“元素已经是另一个元素的子元素”错误

c# - 使用 IIS 的基本身份验证在 WCF 服务中获取用户名

c# - Visual Studio - 在不启动浏览器的情况下调试 Web 应用程序(运行本地 IIS)

asp.net - 需要开发 RESTful API(JSON 和 XML)

silverlight - 无论如何要更改 Silverlight 3 中 OpenFileDialog 的标题?

c# - XNA - 更新方法与绘制方法

c# - 图像到byte[]、Convert和ConvertBack

c# - Windows Phone 中动画编译错误