我有一个代码,它从Sharepoint 2010文档库中提取一些图像。当我登录时,测试一切正常,但发布时会强制登录屏幕。代码访问文档库强制登录[更新]
这里是踢球者:如果我通过普通的HTML参考图像,发布的页面不需要登录。它只是当我试图拉入图像,并建立一个列表到asp:文字控制。
据我所知,列表中的权限允许匿名读取。某处某处有鱼腥味。请帮忙!
下面是我使用的代码:
public void GetBanners() {
string strCode = "";
using (SPSite oSite = SPContext.Current.Site) {
SPList oList = oSite.AllWebs[0].Lists["MainPage Banner Library"];
SPView lv = oList.Views["All Pictures"];
SPListItemCollection lic = oList.GetItems(lv);
foreach (SPListItem li in lic) {
if(li["Enabled"] is bool && (bool)li["Enabled"] == true) {
if(li["URL"] is string && li["URL"].ToString() != "") {
strCode = strCode + "<a href=\"" + GetURL(li["URL"].ToString()) + "\" target=\"_blank\"><img src=\"/MainPage Banner Library/" + li["Name"].ToString() + "\" alt=\" \" /></a>";
} else {
strCode = strCode + "<img src=\"/MainPage Banner Library/" + li["Name"].ToString() + "\" alt=\" \" />";
}
}
}
}
ltBanners.Text = strCode;
}
更新: 拉奎拉的答案是种它。我把第一行改成SPWeb oSite = SPContext.Current.Site.RootWeb;而不是“SPSite oSite = SPContext.Current.Site”,它工作得很好。下面是新的代码:
公共无效GetBanners(){
string strCode = "";
SPWeb oSite = SPContext.Current.Site.RootWeb;
SPList oList = oSite.Lists["MainPage Banner Library"];
SPView lv = oList.Views["All Pictures"];
SPListItemCollection lic = oList.GetItems(lv);
foreach (SPListItem li in lic) {
if(li["Enabled"] is bool && (bool)li["Enabled"] == true) {
if(li["URL"] is string && li["URL"].ToString() != "") {
strCode = strCode + "<a href=\"" + GetURL(li["URL"].ToString()) + "\" target=\"_blank\"><img src=\"/MainPage Banner Library/" + li["Name"].ToString() + "\" alt=\" \" /></a>";
} else {
strCode = strCode + "<img src=\"/MainPage Banner Library/" + li["Name"].ToString() + "\" alt=\" \" />";
}
}
}
ltBanners.Text = strCode;
}