我在开发服务器上使用VS 2008在SharePoint 2007中创建了自定义Web部件。它使用SQL DB。使用我从备份客户端重新创建的测试数据库,我的服务器上的一切正常。
现在我将它移到客户的生产服务器上。我能够部署,安装和激活它。
但是当我尝试将Web部件添加到页面时,它会抛出一个对话框,其中包含“执行命令定义时发生错误。有关详细信息,请参阅内部异常”。
这是我在LOG文件中看到的: ...对象'xxx',数据库'yyy',所有者'dbo'...
拒绝SELECT权限Web部件使用升级的priveleges访问数据库,即使用门户网站应用程序池服务帐户。此帐户具有访问数据库的适当权限。我不明白是什么原因造成的。
非常感谢任何帮助,找出导致错误的原因!
编辑:
此处包含的评论中粘贴的代码用于添加格式:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (WAStockBinEntities context = new WAStockBinEntities())
{
var userStockBin = (from stockBins in context.T1view_SP_StockBin
where stockBins.ADName == currUserName
select stockBins) .ToList().FirstOrDefault();
StockRoomNumber.Text = userStockBin.Stockroom;
BinNumber.Text = userStockBin.BIN;
}
});
答案 0 :(得分:1)
SPSecurity.RunWithElevatedPrivileges
不会影响LINQ用于访问数据库的用户。我将查看LINQ用于访问数据库的连接字符串,并确保连接字符串中引用的用户具有数据库的权限
您可以通过调用数据上下文的Connection.ConnectionString
属性来检查正在使用的连接字符串。
using (WAStockBinEntities context = new WAStockBinEntities())
{
return context.Connection.ConnectionString;
}