标签: sharepoint

SPWeb.Site,你应该调用Dispose()吗?

更新日期06/08/2009 15:52:简短回答NO.原始问题:

我找不到任何关于SPWeb.Site关于处理的指导.我已经阅读了一些关于处理SharePoint对象的最流行的最佳实践文档:

不幸的是,这些指南都没有提到SPWeb.Site.为了给出一些上下文,我正在编写一个公共扩展API,它接受SPWeb作为方法的参数,即:

public static void GetWebPartFromCatalog(this SPWeb web, string webPartName)
{
     ......

     SPSite site = web.Site;
     ......

     **OR** ??

     using (SPSite site = web.Site)
     {
         ....
     }
}
Run Code Online (Sandbox Code Playgroud)

我在SPWeb的refelector中看起来像是Close()方法,由SPWeb.Dispose()调用,并且它没有任何内容表明实际的SPSite成员字段被处理掉了.

更新:2009年8月6日13:47

Alex的建议下

"将它放在一个运行100次的循环中,并使用WSS v3和MOSS 2007中的SPSite/SPWeb泄漏故障排除中描述的SPRequestStackTrace注册表项来检查您的测试代码是否是问题的根源."

我在webpart中运行了以下代码:

 for (int i = 0; i < 100; i++)
 {
     using (SPWeb web = SPContext.Current.Site.OpenWeb(""))
     {
            SPSite site = web.Site;
            Debug.WriteLine(site.Url);
     }
 }
Run Code Online (Sandbox Code Playgroud)

SharePoint日志中没有任何内容.

虽然我会毫不犹豫地从这个天真的实验中得出任何真正的结论,但它表明没有必要处置SPWeb.Site.从更加了解这个主题的人那里得到一个具体的答案真的很好.

更新:06/08/2009 14:52 Greg的评论提示我制定了m_Site的赋值,看起来它最终总是通过内部构造函数传递给SPWeb.例如SPWeb.OpenWeb通过在这个 …

sharepoint dispose

18
推荐指数
2
解决办法
5870
查看次数

如何升级已在生产中运行的长时间运行的SharePoint Workflow

我的任务是帮助部署先前SharePoint部署的第2阶段.

原始部署具有已在阶段2中更新的自定义工作流.
是否存在针对此类情况的"操作方法"?

我们看到的一些陷阱要求您将原始工作流标记为不接受任何新实例,然后将其更新部署为新的worflow.这将允许先前的项目在旧代码和任何新流程下完成处理以启动新工作流程.

这样做的一个问题是我们必须访问附加原始工作流的每个站点并附加新的workflowV2.现在,我们在doc库中有两个工作流状态列.

我刚刚进入项目,这些是开发人员注意到的问题.

任何可以向我投掷的资源或提示都会受到赞赏,因为我正在学习所有这些.

以下是来自另一个开发者的一些注释,他们给了我一些关于他所看到的背景的背景:

如果已存在工作流的某个版本,则将其重新部署为功能将导致现有工作流的状态设置为"无新实例".通过转到已附加工作流的文档库,可以看到这一点,选择设置 - >文档库设置 - >工作流设置 - >删除工作流并注意工作流的单选按钮设置.工作中的任何当前工作流实例仍将正常完成,但此设置将阻止工作流的任何新实例.

一旦部署了相同工作流的第二个"版本",您将需要重新访问要将其关联的每个文档库,并重新添加它,就像它是一个新的工作流一样.你必须给它一个唯一的名字,比如'MyWorkflow_v2'.另一个副作用是,现在您将在文档库中拥有2个工作流状态列.一旦所有实例完成并且不再需要状态,您可以删除/隐藏第一个.

如果使用相同的功能和清单XML文件重新部署工作流,则内部GUID将与第一次部署中使用的内部GUID相同.SharePoint会将此识别为同一工作流的第二个"版本",并自动将第一个版本设置为"无新实例"状态.但是,如果您选择在XML文件中使用不同的GUID,则SharePoint会将此视为全新工作流的部署,并且不对现有实例执行任何操作.您需要手动将每个文档库中的每个实例设置为"无新实例"设置.

重新部署工作流的第二个"版本"后,您仍然需要手动访问要使用它的每个文档库,并将其添加到文档库中.请记住,其工作流模板名称将显示在工作流模板列表中,因为它在XML文件中命名(可以),但是一旦添加它,您将需要为工作流输入唯一的工作流名称.这是您必须选择"Workflow_v2"之类的新名称.

撤消操作会删除解决方案中的所有功能实例,特别是对于我的工作流应用程序,它会从与其关联的所有文档库中删除工作流的所有实例.但是,在这种情况下在工作流创建任务的情况下,如果用户单击期望获取签名页面的任务项,则缩回解决方案后,他们将获得SharePoint"未知错误"页面.原因是因为撤消过程从数据库中删除了工作流程,并且不再有与该任务相关联的工作流程.

sharepoint

17
推荐指数
1
解决办法
9268
查看次数

如何确定SharePoint SPFolder中是否存在文件

除了循环SPFolder中的文件以确定是否存在给定文件名(字符串)之外,还有其他方法吗?

sharepoint

17
推荐指数
2
解决办法
5万
查看次数

在sharepoint日历中的日期提醒

我有一个部门维护需要大约每3个月完成一次.维护本身不能自动化(它涉及物理交换主要和备用的网络硬件以验证备用磁盘是否仍然正常工作).

我可以将它作为Outlook中的重复事件并给它一个两周的提醒窗口,但我不希望它与个人的帐户绑定(如果我或我的一个同事离开公司,我仍然想要提醒去部门).

我们正在努力实施Sharepoint,我的团队有一个维护日历,这似乎是一个可爱的地方.但是,事件似乎没有过时的通知.您可以在事件更改时设置通知,并且可以订阅日历并通过Outlook设置通知,但该通知仍然是按用户通知.

在这一点上,我可能只是在Linux服务器上写一个cronjob,通过电子邮件发送提醒,但我想我会问是否有办法使用我们正在实施的所有这些昂贵的协作工具.

那么,任何想法如何获得与个人用户无关的日期事件的通知?我还欢迎被告知,只要涉及一些好的选择,我对问题的全部看法都是错误的.谢谢!

sharepoint calendar

17
推荐指数
1
解决办法
6万
查看次数

如何从C#webservice生成WSDL文件

我已经创建了这样的WebService:

[WebService(Namespace = "http://ns")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GroupManagerService : WebService
{
    public GroupManagerService()
    {
    }

    [WebMethod]
    public bool MyMethod(string loginname, string country)
    {
        // code here...
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以为此代码生成WSDL文件而无需连接到正在运行的服务?我搜索,我发现有关信息svcutil.exe的&Wsdl.exe用,但这些只能从运行WebService的检索WSDL时工作.

(对于java,有一个名为java2wsdl的工具,是否有等效的c#?)



:更新:
此问题的上下文是我要向SharePoint添加新的CustomWebService,它应该使用SharePoint上的_vti_bin文件夹中的WSPBuilder进行部署.另请参阅在SharePoint.SE上的帖子.

我想自动生成(使用msbuild命令)'MyServicewsdl.aspx''MyServicedisco.wsdl',它必须放在_vti_bin文件夹中.



也许我错过了一些东西?svcutil.exe的输出是:

bin\Debug>SvcUtil.exe MyWebService.dll
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation.  All rights reserved.

Generating metadata files... …
Run Code Online (Sandbox Code Playgroud)

c# sharepoint wsdl web-services asmx

17
推荐指数
2
解决办法
6万
查看次数

这个Javascript代码有什么作用?

我一直在看Sharepoint脚本文件,我遇到过这个我没有得到的:

function ULSTYE() {
    var o = new Object;
    o.ULSTeamName = "Microsoft SharePoint Foundation";
    o.ULSFileName = "SP.UI.Dialog.debug.js";

    return o;
}

SP.UI.$create_DialogOptions = function() {
    ULSTYE:;   <----------------------------- WTF?
    return new SP.UI.DialogOptions();
}
Run Code Online (Sandbox Code Playgroud)

实际上,此文件中的每个函数定义都在ULSTYE:;左大括号后面的同一行开头.任何人都能解释第二个函数的第一行是做什么的吗?

例如,Firefox/Firebug将此功能解释为我无法理解的功能:

function () {
    ULSTYE: {
    }
    return new (SP.UI.DialogOptions);
}
Run Code Online (Sandbox Code Playgroud)

我以为我一直都知道Javascript ...... ;)必须是我过去从未使用的一些模糊的功能,显然很少被其他人使用.

javascript sharepoint sharepoint-2010

17
推荐指数
2
解决办法
2401
查看次数

无法加载文件或程序集''或其依赖项之一

有什么帮助吗?

我只有一个图书馆,这让我发疯.这是我收到的错误.我没有使用任何其他依赖.

Could not load file or assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified. …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sharepoint sharepoint-2010

17
推荐指数
2
解决办法
10万
查看次数

SharePoint中的Farm是什么?

我正在寻找关于农场的定义,但我找不到符合我需要的定义.

有谁知道解释它的简单方法?

SharePoint中的Farm是什么?它是如何工作的?

sharepoint sharepoint-2010 sharepoint-2013

17
推荐指数
1
解决办法
3万
查看次数

通过List Webservice更新列表项来触发SharePoint Workflow

我正在开发一个简单的SharePoint顺序工作流,它应绑定到文档库.将小工作流程与文档库关联时,我检查了这些选项

  • 允许具有"编辑项目权限"的经过身份验证的用户手动启动此工作流.
  • 创建新项目时启动此工作流程.
  • 更改项目时启动此工作流程.

现在我将文档上传到此库,工作流程启动,例如发送邮件.它完成了,一切都很好.

当我在新项目上选择编辑属性并保存更改时,将再次触发工作流程.绝对是我们的期望.

即使在Copy.asmx Webservice的帮助下将新项目复制到库中,工作流程也会正常启动.

现在我想通过SharePoint WebService Lists.asmx更新项目.

我的CAML在这里:

<Method ID='1' Cmd='Update'>
  <Field Name='ID'>1</Field>
  <Field Name='myDummyPropertyField'>NewValue</Field>
</Method>
Run Code Online (Sandbox Code Playgroud)

项目正在更新(时间戳已更改并且还具有虚拟属性)但工作流程不会再次启动.

这种行为可以在我们的开发测试系统上重现.

检查错误日志(C:\ Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS)我发现了一条奇怪的错误消息:

09/25/2008 16:51:40.17  w3wp.exe (0x1D94)                           0x1D60  Windows SharePoint Services     General                         6875    Critical    Error loading and running event receiver Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver in Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Additional information is below.  : The object specified does not belong to a list.
Run Code Online (Sandbox Code Playgroud)

有谁可以证实这种行为?或任何解决方案提示?


我随时向您通报有关该主题的任何进展.

sharepoint workflow web-services autostart

16
推荐指数
1
解决办法
2万
查看次数

如何修复错误:无法解析从服务器收到的消息

我们有一个使用AJAX的Sharepoint解决方案.触发此操作的按钮位于更新面板中.

我们做的一件事就是生成一个MS Word文档,然后在客户端上打开它,以便打印它.

将文档发送到客户端的代码如下所示:

    void OpenFileInWord(byte[] data)
    {
        Response.Clear();
        Response.AddHeader("Content-Type", "application/msword");
        Response.BinaryWrite(data);
        Response.Flush();
        Response.End();
    }
Run Code Online (Sandbox Code Playgroud)

我们得到的错误是:

Message: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near '<?mso-application pr'.

我们可以先在Sharepoint中保存文档,然后从Sharepoint打开它,但我们不希望这样做.

c# ajax sharepoint

16
推荐指数
4
解决办法
6万
查看次数