Frage

Ich mache meine zweite Anwendung für die Plattform der Windows 7 Phone -Serie und kann mit HTTPS keine Verbindung zu einem SharePoint -Server herstellen.

99% der folgenden Aussagen sind nicht mein Code. Ich habe es mir ausgeliehen http://blog.daisley-harrison.com/blog/post/practical-silverlight-and-sharepoint-integration-two.aspx bis ich kann weiter verstehen, wie Seife in der W7P -Serie funktioniert.

Ich weiß, dass ich eine Möglichkeit brauche, Anmeldeinformationen zu senden, aber die Gewinn 7 -API scheint Sie nicht zu lassen.Servicereferences.clientconfig

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="ViewsSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered">
                    <security mode="TransportCredentialOnly"/>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://my.secureconnection.com/_vti_bin/views.asmx"
                binding="basicHttpBinding" bindingConfiguration="ViewsSoap"
                contract="SharePointListService.ViewsSoap" name="ViewsSoap"  />
        </client>
    </system.serviceModel>
</configuration>

Dies ist meine Maincode -Seite:

    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;
            try
            {
                Uri serviceUri = new Uri("https://my.secureconnection.com" + SERVICE_LISTS_URL);
                BasicHttpBinding binding;
                if (serviceUri.Scheme == "https")
                {
                    binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
                }
                else
                {
                    binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                }
                EndpointAddress endpoint = new EndpointAddress(serviceUri);
                ListsSoapClient listSoapClient = new ListsSoapClient(binding, endpoint);


                NetworkCredential creds = new NetworkCredential("administrator", "iSynergy1", "server001");
                //listSoapClient.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Identification;
                //listSoapClient.ClientCredentials.Windows.ClientCredential = creds;

                listSoapClient.GetListCollectionCompleted += new EventHandler<GetListCollectionCompletedEventArgs>(listSoapClient_GetListCollectionCompleted);
                listSoapClient.GetListCollectionAsync();
            }
            catch (Exception exception)
            {
                handleException("Failed to get list collection", exception);
            }
        }
        #region ShowExceptionDetail Property
        public static readonly DependencyProperty ShowExceptionDetailDependencyProperty = DependencyProperty.Register("ShowExceptionDetail",typeof(bool),typeof(Page),new PropertyMetadata(true));
        public bool ShowExceptionDetail
        {
            get { return (bool)GetValue(ShowExceptionDetailDependencyProperty); }
            set { SetValue(ShowExceptionDetailDependencyProperty, value); }
        }
        #endregion
        private void handleException(string context, Exception exception)
        {
            this.Dispatcher.BeginInvoke(delegate()
            {
                bool showExceptionDetail = this.ShowExceptionDetail;

                string message = "";

                Exception next = exception;
                do
                {
                    if (message.Length > 0) { message += ";" + Environment.NewLine; }
                    if (next.Message == null || next.Message.Length == 0) { message += next.GetType().FullName; }
                    else { message += next.Message; }
                    if (showExceptionDetail)
                    {
                        if (next.Data.Count > 0)
                        {
                            bool first = true;
                            message += " {";
                            foreach (string key in next.Data.Keys)
                            {
                                if (first) { first = false; }
                                else { message += ", "; }
                                message += key + "=\"" + next.Data[key] + "\"";
                            }
                            message += "}";
                        }
                        if (next.InnerException != next)
                        {
                            next = next.InnerException;
                            continue;
                        }
                    }
                    next = null;
                }
                while (next != null);
                MessageBox.Show(message, context, MessageBoxButton.OK);
            });
        }

        private const string SERVICE_LISTS_URL = "/_vti_bin/lists.asmx";
        void listSoapClient_GetListCollectionCompleted(object sender, GetListCollectionCompletedEventArgs e)
        {
            try { myList.Text = e.Result.ToString(); }
            catch (Exception exception) { handleException("Failed to get list collection", exception); }
        }
    }

Wenn ich dies ausführe und es zum Teil "ListSSoapclient" gelangt, bricht es. Wenn Sie in die Fehlerausgabe eingraben, wird der Zugriff verweigert. Ich habe verschiedene Methoden zum Senden von Anmeldeinformationen ausprobiert, aber keine zu funktionieren. "Clientcredentials.Windows" wird nicht unterstützt und Clientcredentials.UsersName.Unername wird nur gelesen.

War es hilfreich?

Lösung

Microsoft hat bestätigt, dass NTLM noch nicht im SDK unterstützt wird. http://social.msdn.microsoft.com/forums/en-us/windowphone7series/thread/43a84dff-9447-4e95-8040-8a5447514fa0


AKTUALISIEREN

Sieht so aus, als hätte jemand eine Problemumgehung gefunden http://zetitle.wordpress.com/2010/03/30/wp7-connecting-t-web-services-that-uses-authentication/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top