我已通过使用 SmartParts 在 SharePoint 网站上创建了一些自定义 WebPart。我的自定义 Web 部件查看 2 个不同的 SQL Server 数据源。
- 当我从 Visual Studio 2008 运行我的代码时,它 100% 有效
- 当我在 SharePoint 页面上部署代码时,从服务器运行它时,它 100% 正常工作
但是当我从本地 PC 访问 SharePoint 网站并点击该自定义 Webpart 时,我收到错误“403 FORBIDDEN”。现在我知道这是一个安全问题,但问题出在哪里?为什么?为什么它在服务器上可以工作,而在另一台 PC 上却不行?
任何帮助都将非常有帮助!!
编辑:
我的 Web.config 中的 ConnectionString
<add name="DSN" connectionString="Data Source=TCP:us-support.a1.mydomain.com;
Initial Catalog=myDB;Integrated Security=false;User ID=myID;Password=myPassword"
providerName="System.Data.SqlClient" />
答案1
我能想到的主要原因有两个:
NTLM 双跳问题
这可能是问题所在。您是否:
- 您的网络中使用 Windows 身份验证 (NTLM) 而不是 Kerberos?
- 使用模拟连接到数据库?(如果数据库连接字符串包含
Integrated Security=SSPI
或 则为TrueTrusted_Connection=True
)
那么你可能正面临双跳问题。这是因为 ASP.NET 仅将您的 Windows 凭据传递给一台服务器,而不是两台。因此它将从您的本地 PC 传递到 SharePoint 服务器,但不会传递到数据库服务器。
我所知道的避免这种情况的唯一方法(除非您想配置 Kerberos)是设置一个 SQL 帐户并在数据库的连接字符串中使用它。
资源权限
Web 部件正在访问您的本地 PC 帐户无权访问的资源。
针对您认为导致问题的 Web 部件部分执行某种日志记录,并将问题范围缩小到特定的代码行。请注意,虽然这可能是数据库身份验证问题,但也可能是 Web 部件正在访问您的本地帐户无权访问的某些 CSS 文件或其他资源。