質問

次の例外がありました。

System.workflow.runtime.hosting.persistenceException:タイプ 'microsoft.sharepoint.spweb' in Assembly 'Microsoft.SharePoint、バージョン= 12.0.0.0、Culture = Neutral、PublicKeyToken = 71E9BCE1111E9429C'は平等にマークされていません。 - > System.Runtime.Serialization.SerializationException:タイプ 'Microsoft.sharepoint.spweb' In Assembly 'Microsoft.SharePoint、バージョン、version = 12.0.0.0、Culture = Neutral、PublicKeyToken = 71E9BCE111E9429C'は、平等化としてマークされていません

エラーはここから来ました:

public sealed partial class MyWorkflow : StateMachineWorkflowActivity
{
    public SPWorkflowActiviationProperties workflowProperties = new SPWorkflowActivationProperties();
    private SPWeb spWebtemp;

    private SPWeb spWeb
    {
        get { return spWebtemp ?? (spWebtemp = workflowProperties.Web); }
    }

    ...

私が見つけた2つのブログ投稿があります:

この問題には1つの解決策があります。 グローバル変数として複雑なメンバーオブジェクトを持っていません, 、しかし、ローカル変数として - つまり、グローバルレベルではなくspweb(workflowproperties.web)を宣言します。

ですから、私が使用しているすべての方法でSPWEBを再除去する必要があります - 私はかなり醜いと思う。

私も試したのはこれです:

...
[NonSerialized]
private SPWeb spWebtemp;

private SPWeb spWeb
{
    get { return spWebtemp ?? (spWebtemp = workflowProperties.Web); }
}
...

==>これ以上のシリアル化例外はありません!

使用するときに否定的な意味がありますか NonSerialized このフィールドの属性?
または言い換えれば、その意味は何ですか?

役に立ちましたか?

解決

単にやりませんか:

private SPWeb spWeb
{
    get { return workflowProperties.Web; }
}

spwebオブジェクトの怠zyな負荷は、プロパティプロパティによって既に処理されています

他のヒント

これも機能するように見えます(以前の属性属性):

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx

編集

私はこれをテストしていませんが、私はこのようなことを考えています:

public sealed partial class MyWorkflow : StateMachineWorkflowActivity
{

public SPWorkflowActiviationProperties workflowProperties = new SPWorkflowActivationProperties();

[NonSerialized()]
private SPWeb spWebtemp;

private SPWeb spWeb
{
    get { return spWebtemp ?? (spWebtemp = workflowProperties.Web); }
}

[OnDeserialized()]
internal void OnDeserializedMethod(StreamingContext context)
{
    spWebTemp = workflowProperties.Web;
}


...

また、コンストラクターのSPWEBTEMPオブジェクトを初期化してみませんか、それともワークフローでは不可能ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top