2009-08-13 45 views
0

我们有一个存档站点,它是“活动”站点的精确副本,但使用不同的服务帐户。我已经构建了一个EditControlBlock扩展,将用户重定向到_layouts文件夹中的一个页面。该页面上有一些文字和一个确定按钮。无法使用SPWeb,数据库登录失败

编辑:我试图使用的SPWeb是在不同的WebApplication中。我正在尝试将文件x移动到存档站点。

当点击确定按钮,就应该执行以下代码:

using (var archive = new SPSite(archiveurl, SPContext.Current.Web.CurrentUser.UserToken)) 
{ 
    using (var newsArchive = archive.RootWeb.Webs[SPContext.Current.Web.Name]) 
    { 
    //move file 
    } 
} 

奇怪的是,它打破了第2行:using (var newsArchive = archive.RootWeb.Webs[SPContext.Current.Web.Name])这是奇怪的,因为第一线确实工作。 我得到的错误是:

login failed for user x on database y 

任何人有一个想法吗?源自LayoutsPageBase的页面上的代码是否始终以Web应用程序的apppool帐户运行?

+0

为什么您希望在使用SPContext.Current.Web和Site时使用新的SPSite? – Kusek 2009-08-13 07:49:50

+0

因为我试图使用的SPWeb是在不同的WebApplication中。我正在尝试将文件x移动到存档站点。 – Colin 2009-08-13 08:23:16

回答

1

我已经在目标数据库上设置了数据库权限。我必须使源web应用程序的apppool用户成为目标数据库中db_owner组的成员。不确定这是否是要走的路。有更好主意的人请告诉我。

+0

+1这是有道理的,是我能想到的最好的想法! – 2009-08-13 09:04:22

+0

Web服务呢? – Kusek 2009-08-13 10:05:11

+0

这应该是可能的,因为所有的代码都在同一个服务器上运行。它应该工作。当你可以使用API​​时,使用Web服务是一种主要的解决方法(即你改变代码来解决一个问题,据我所知,这是一个配置问题) – Colin 2009-08-13 10:47:34

相关问题