C# 通过WinForm应用程序使用特定用户名/密码连接到Sharepoint网站

C# 通过WinForm应用程序使用特定用户名/密码连接到Sharepoint网站,c#,winforms,sharepoint,C#,Winforms,Sharepoint,干草, 我正在开发一个windows窗体应用程序(C#),它连接到sharepoint网站并从中读取数据(列表) 问题是: 如何使用特定的用户名/密码连接到站点,而不使用当前的Windows用户或域用户 请指教 编辑:附言:在SP 2007上工作 我的代码: SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite sourceSite = new SPSite(txtBoxSP.Te

干草, 我正在开发一个windows窗体应用程序(C#),它连接到sharepoint网站并从中读取数据(列表)

问题是: 如何使用特定的用户名/密码连接到站点,而不使用当前的Windows用户或域用户

请指教

编辑:附言:在SP 2007上工作

我的代码:

 SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite sourceSite = new SPSite(txtBoxSP.Text))
            {
                SPWeb sourceWeb = sourceSite.RootWeb;
                SPUserCollection usrs = sourceWeb.AllUsers;

                SPListCollection col = sourceWeb.GetListsOfType(SPBaseType.GenericList);

                foreach (SPList list in col)
                    System.Diagnostics.Debug.WriteLine(string.Format("My Name: {0}, Type: {1}, Length: {2}",
                        list.Title, list.GetType().ToString(), list.ItemCount.ToString()));
            }
        });
像这样:

var cc = new CredentialCache();
cc.Add(
    new Uri(sourceSite.Url), 
    "NTLM", 
    new NetworkCredential("user", "password"));
sourceSite.Credentials = cc;
当然,硬编码这样的密码不是很安全。您可以向用户询问这一点。有另一个用户为此目的使用安全字符串


更新:

我没有注意到您正在使用SharePoint对象模型。最初我以为您是从WSDL生成代理。如何做到这一点。

像这样:

var cc = new CredentialCache();
cc.Add(
    new Uri(sourceSite.Url), 
    "NTLM", 
    new NetworkCredential("user", "password"));
sourceSite.Credentials = cc;
当然,硬编码这样的密码不是很安全。您可以向用户询问这一点。有另一个用户为此目的使用安全字符串


更新:


我没有注意到您正在使用SharePoint对象模型。最初我以为您是从WSDL生成代理。关于如何实现这一点。

也许本文可以帮助您

MSDN查找此页面中的给定行。我想这篇文章会告诉你一个方法。如果找不到这些行,请告诉我:)


也许这篇文章可以帮助你

MSDN查找此页面中的给定行。我想这篇文章会告诉你一个方法。如果找不到这些行,请告诉我:)


“Microsoft.SharePoint.SPSite”不包含“凭据”的定义,并且找不到接受“Microsoft.SharePoint.SPSite”类型的第一个参数的扩展方法“凭据”(是否缺少using指令或程序集引用?)!请提供建议。关于更新:“web”对象是什么?我猜您提供的示例讨论的是web部件开发,而不是winApp,对吗?在示例(编号
[3]
)中,他们使用了一个
SPUserToken
,它被传递给
SPSite
的构造函数。缺少一些要点!,他在示例中使用的“web”对象是什么?它是“SPWeb”吗?什么是“inpuser”对象?我猜他使用了仅在sharepoint Web部件主机环境中找到的currentContext,或者我缺少了什么?。这是一个
SPWeb
实例。请注意:“Microsoft.SharePoint.SPSite”不包含“凭据”的定义,并且找不到接受类型为“Microsoft.SharePoint.SPSite”的第一个参数的扩展方法“凭据”(是否缺少using指令或程序集引用?)!请提供建议。关于更新:“web”对象是什么?我猜您提供的示例讨论的是web部件开发,而不是winApp,对吗?在示例(编号
[3]
)中,他们使用了一个
SPUserToken
,它被传递给
SPSite
的构造函数。缺少一些要点!,他在示例中使用的“web”对象是什么?它是“SPWeb”吗?什么是“inpuser”对象?我猜他使用了仅在sharepoint Web部件主机环境中找到的currentContext,或者我缺少了什么?。这是一个
SPWeb
实例。看看这个: