我的计算机位于域(Active Directory)中,我需要动态获取域名.我在互联网上找到了以下代码:
SelectQuery query = new SelectQuery("Win32_ComputerSystem");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (ManagementObject mo in searcher.Get())
{
if ((bool)mo["partofdomain"])
{
this.Domain = mo["domain"].ToString();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它完全按照我的意愿工作,并返回我想要的域名(当我以管理员身份登录时).如果用户不是域管理员,我有一个Access denied
例外.
有没有人知道如何使用非域管理员用户获取域名?
注意:我在Internet上找到了这个解决方案,System.Environment.UserDomainName;
但它只给了我一部分域名.
即我的域名是:something.domain.com
和UserDomainName
唯一的回报something
.
有时我们需要在SharePoint中执行小型管理任务.一个简单的PowerShell脚本是一个非常好的工具.例如,这样的脚本可以枚举列表的事件处理程序:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = new-object Microsoft.SharePoint.SPSite($args[0])
$site.RootWeb.Lists["MyList"].EventReceivers > C:\MyListHandlers.txt
Run Code Online (Sandbox Code Playgroud)
据了解,类似的对象SPSite
,并SPWeb
必须Dispose()
在通话后-d,否则会出现内存泄漏.最好的是打电话
$site.RootWeb.dispose()
$site.dispose()
Run Code Online (Sandbox Code Playgroud)
在这个脚本的末尾.但是如果这是一个只运行一次的Powershell脚本,并且我们知道PowerShell在执行后会清理 - 那么不调用dispose()是不是很糟糕?
所以,我的问题是 - 如果有时我运行这样的脚本,会有一些危险吗?它会影响SharePoint场(或我运行脚本的服务器)的整体稳定性吗?
我正在开发一个WebPart(它将在SharePoint环境中使用,虽然它不使用对象模型)我想要公开AJAX功能.由于环境的性质,直接向页面添加脚本管理器是不是一个选项,因此必须以编程方式添加.我试图将ScriptManager控件添加到我的webpart代码中的页面.
protected override void CreateChildControls()
{
if (ScriptManager.GetCurrent(Page) == null)
{
ScriptManager sMgr = new ScriptManager();
// Ensure the ScriptManager is the first control.
Page.Form.Controls.AddAt(0, sMgr);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,执行此代码时,我收到以下错误消息:
"在DataBind,Init,Load,PreRender或Unload阶段,无法修改控件集合."
是否有另一种方法将ScriptManager从WebPart添加到页面中,或者我是否只需将ScriptManager添加到将使用WebPart的每个页面(或母版页)?
更新一个重新回顾这个问题的有趣时刻.当SharePoint 2010开始占据时,感知是否仍然相同?当然,实施2010并非没有自己的挑战,但其中一个是商业认知吗?
更新:我们的实施现在正在高速发展,一些高调的项目将在未来几周内上线,所以我很想知道环境是否已经改变.
原始问题
我们的工作环境中存在一个问题,即SharePoint的感知是:
a)金色的子弹,是我们所有问题的答案.
b)应用程序是否解决了特定问题.
c)令人沮丧的工具,不能满足他们的严格要求.
现在我认为SharePoint(或者更具体地说是我们的Microsoft Office SharePoint Server 2007)是一个基于各种低级Microsoft技术(IIS,ASP.Net,WSS 3.0,.Net Framework,Windows Workflow Foundation等)的框架.因此可以发展为做任何事情(给定时间和资源).
在我的组织(以及其他我确定的其他人)中形成的态度是微软营销机器和组织者希望在尽可能多的人面前获得"金子弹"的愿望,而不是说'为什么? " 或'为什么?' 或者在某些情况下甚至是"怎么样?"
这是其他SharePoint开发者共享的态度和看法吗?
我尝试SPSite
在自定义进程(MyApp.exe)中实例化服务器场服务器上的实例,并将其作为参数提供给整个URI(http:// mysite:80 /).我还相信,该帐户运行MyApp.exe
的Site Collection Administrator
.
但是,我无法做出SPSite
我想要做的任何事情.它总是抛出一个FileNotFoundException
.
有人有个主意吗?
堆栈跟踪:
在Microsoft.SharePoint.SPSite..ctor(SPFarm场,Uri requestUri,Boolean contextSite,SPUserToken userToken)
的Microsoft.SharePoint.SPSite..ctor(String requestUrl)在C中的MyCompanyName.Service.HelperClass.GetItemStateInSharePoint(SharePointItem项)中:\Workspaces\MyCompanyName\Development\Main\MyCompanyName.SharePoint\Service\HelperClass.cs:第555行
另一方面说明......我有一个Web应用程序+网站集,我可以通过浏览器访问它没有任何问题.
我从http://msdn.microsoft.com/en-us/library/dd584174(office.11).aspx获取以下代码,用于在webpart工具窗格中添加自定义属性.方括号([]
)在下面的代码中的含义是什么?
[Category("Custom Properties")]
[WebPartStorage(Storage.Personal)]
[FriendlyNameAttribute("Custom Color")]
[Description("Select a color from the dropdown list.")]
[Browsable(true)]
[XmlElement(typeof(System.Drawing.KnownColor))]
public System.Drawing.KnownColor MyColor
{
get
{
return _myColor;
}
set
{
_myColor = value;
}
}
Run Code Online (Sandbox Code Playgroud) 即使在大屏幕上,SharePoint 2007(WSS或MOSS)日志也不容易阅读,任何人都可以遇到能够执行以下操作的日志查看器:
上述功能的一部分是可以接受的,WinForms或SharePoint功能等一系列工具也是可以接受的.
除了引起我注意的顺序之外,下面的列表没有任何特定的顺序.如果您对以下答案中的产品upvote/comment有任何经验,我已经发布了我找到的日志查看器.
发现到目前为止:
我正在开发项目,我必须在C#中访问SharePoint数据.
我以前从未这样做过; 并有以下问题?
我如何从C#访问SharePoint数据?我使用什么API?有没有可以帮助我入门的教程?
是否有一种"好的"方法来为SharePoint创建这样的类似的CAML查询?
SELECT *
FROM table
WHERE Id IN (3, 12, ...)
Run Code Online (Sandbox Code Playgroud)
还是我陷入了嵌套<Or>
节点的噩梦?
编辑:这是我生成<Or>
节点的解决方案.
/// Simulates a SQL 'Where In' clause in CAML
/// </summary>
/// <param name="columnType">Specifies the data type for the value contained by the field.</param>
/// <returns>Nested 'Or' elements portion of CAML query</returns>
public static string CamlIn<T>(string internalFieldName, string columnType, T[] values)
{
XDocument doc = new XDocument();
XElement prev = null;
int index = 0;
while (index < values.Length)
{
XElement element = …
Run Code Online (Sandbox Code Playgroud) 技术:Winforms,.NET,C#,Sharepoint Web服务
我目前正在编写一个winform桌面应用程序,该应用程序应该访问特定的Sharepoint文档列表和自定义输入变量(来自Sharepoint文档库)
http://www.infoq.com/articles/swanson-moss-web-services
这个网站让我很好地了解了哪些网络服务可用,但我无法从这里弄清楚如何访问我想要的内容.
使用website.com/_vti_bin/Lists.asmx和website.com/_vti_bin/Dws.asmx作为我的网络参考.
com.website.Lists splist = new Project.com.website.Lists();
com.website1.Dws spData = new Project.com.website1.Dws();
splist.Credentials = new NetworkCredential("username", "password", "domain");
splist.GetList("My_list");
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试连接,它给了我一个SOAPException(这是我可以提供的详细信息的范围)
不确定是否需要这样做,但是在"website.com"上托管了一个共享点网站(我试图访问的是"website.com/sites/mysite")这会改变一些事情吗?
我只是想知道我是否在使用这项服务的正确轨道上,或者如果我错了
编辑1:留下原始问题,以便人们了解正在发生的事情.
@CBono:您链接的文章对入门入门起了很大的帮助.(我还不能upvote :()我已经设法获得列表,但格式化,或获取AT数据证明是困难的.这是提供的:
query.InnerXml = "<Where><Gt><FieldRef Name=\"ID\" />" + "<Value Type=\"Counter\">3</Value></Gt></Where>";
viewFields.InnerXml = "<FieldRef Name=\"Title\" />";
queryOptions.InnerXml = "";
Run Code Online (Sandbox Code Playgroud)
但我的结果如下:
<rs:data ItemCount="4" xmlns:rs="urn:schemas-microsoft-com:rowset">
<z:row ows_Title="" ows_Deal_x0020_ID="4055.00000000000" ows_MetaInfo="8;#Subject:SW| Deal ID:DW|4055.00000000000 vti_parserversion:SR|12.0.0.6545 _Category:SW| SVP Approved?:IW|1 vti_author:SR|DD\\admin vti_approvallevel:SR| vti_categories:VW| vti_modifiedby:SR|DD\\admin vti_assignedto:SR| Keywords:SW| vti_cachedcustomprops:VX|vti_approvallevel vti_categories Subject Deal\\ ID vti_assignedto Keywords vti_title _Author _Category Quarter-End\\ Date ContentType SVP\\ …
Run Code Online (Sandbox Code Playgroud)