自写了一个WebPart 用DataRead列出数据,准备
部署在SharePoint服务器上,想想很容易,一路顺利,可是将导入的WebPart拽到页面时,出来这个错误:
An Error has occurred: Request for the permission of type System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
看来WebPart访问SQL有问题:
于是。在WSS的webConfig文件中添加下列两行:
<
SafeControl Assembly
=
"
System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
"
Namespace
=
"
System.Data.SqlClient
"
TypeName
=
"
*
"
Safe
=
"
True
"
/>
<
SafeControl Assembly
=
"
System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
"
Namespace
=
"
System.Data
"
TypeName
=
"
*
"
Safe
=
"
True
"
/>
还是不行,
又在C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/60/config/wss_minimaltrust.config文件中添加下面一行:
<
SecurityClass Name
=
"
SqlClientPermission
"
Description
=
"
System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
"
/>
服务器 iisreset后 还是不行!
这可怪了! 再到服务器上一看,原来数据库采用Windows身份验证模式,而不是混合验证模式
于是,再次将服务器上的ASPNET帐号户设置为所有数据库访问权
还是不行
怀疑是.net运行权限不够
再次在服务器中"信任程序集",将服务器上的System.dll的程序集权限设主完全信任!
还是不行!我晕
再捍源码中连接串如下:
"Data Source=sp-hgh;Initial Catalog=NorthWind;uid-sa;pwd=;"
马上改为:
"Data Source=sp-hgh;Initial Catalog=NorthWind;Integrated Security=SSPI;Trusted_Connection=yes;"
结果还是出不来数据
唉!整个一郁闷
最后捍了XGP的文章《[url=http://xgp1226.blogdriver.com/xgp1226/598244.html]Web部件访问SQL数据库--寻找收获的快乐[/url]》一文,深受启发,又参考MSDN文档,终于成功!
方法:
然后在wss_minimaltrust.config文件(在Webconfig文件中查找文件的位置)的<SecurityClass>节点中加入子节点:
<
SecurityClass Name
=
"
SqlClientPermission
"
Description
=
"
System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
"
/>
,
<
SecurityClass Name
=
"
SharePointPermission
"
Description
=
"
Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
"
/>
再在ASP.net(注意必须)的<PermissionSet>节点中加入子节点:
<
IPermission
class
=
"
SqlClientPermission
"
version
=
"
1
"
Unrestricted
=
"
true
"
/>
<
IPermission
class
=
"
SharePointPermission
"
version
=
"
1
"
ObjectModel
=
"
True
"
/>
再重启IIS
iisreset 后, 一切OK!
我的源码如下:
using
System;
using
System.ComponentModel;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Xml.Serialization;
using
Microsoft.SharePoint;
using
Microsoft.SharePoint.Utilities;
using
Microsoft.SharePoint.WebPartPages;
using
System.Data;
using
System.Data.SqlClient;
namespace
NewDispData
{
///
<summary>
///
Description for WebPart1.
///
</summary>
[DefaultProperty(
"
Text
"
),
ToolboxData(
"
<{0}:WebPart1 runat=server></{0}:WebPart1>
"
),
XmlRoot(Namespace
=
"
NewDispData
"
)]
public
class
NewDispData : Microsoft.SharePoint.WebPartPages.WebPart
//
,ICellConsumer
//
,IRowProvider
{
webPart变量
创建子控件
///
<summary>
///
Render this Web Part to the output parameter specified.
///
</summary>
///
<param name="output">
The HTML writer to write out to
</param>
protected
override
void
RenderWebPart(HtmlTextWriter output)
{
//
output.Write(SPEncode.HtmlEncode(Text));
EnsureChildControls();
if
(ErrorLabel.Visible
==
true
)
{
ErrorLabel.RenderControl(output);
return
;
}
//
If connected then display a heading and the grid.
if
(_connectionCount
>
0
)
{
output.RenderBeginTag(
"
div
"
);
output.Write(
"
<br>
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,
"
bold
"
);
output.RenderBeginTag(HtmlTextWriterTag.Span);
///
/ output.Write("
<nobr>
Orders for Customer ID: "
///
/ + System.Web.HttpUtility.HtmlEncode(CustomerId) + "
</nobr>
");
output.RenderEndTag();
//
span
output.Write(
"
<br>
"
);
output.Write(
"
<br>
"
);
OrdersGrid.RenderControl(output);
output.RenderEndTag();
//
div
}
if
(_connectionCount
>
0
)
{
output.RenderBeginTag(
"
div
"
);
output.Write(
"
<br>
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,
"
bold
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.Color,
"
#000000
"
);
output.RenderBeginTag(HtmlTextWriterTag.Span);
///
/ output.Write("
<nobr>
Orders for Customer ID: "
///
/ + System.Web.HttpUtility.HtmlEncode(CustomerId));
///
/ output.Write("
</nobr>
");
output.RenderEndTag();
//
span
BindGrid();
OrdersGrid.RenderControl(output);
output.RenderEndTag();
//
div
}
}
}

博主自写WebPart用DataRead列出数据,部署在SharePoint服务器时,WebPart访问SQL出现问题。尝试在多个配置文件添加内容、设置数据库访问权、调整程序集权限、修改连接串等方法均未成功,最后参考文章和MSDN文档,在特定配置文件节点添加子节点并重启IIS后解决问题。
2297





