Я получил следующее исключение:
System.Workflow.Runtime.Hosting.PersistenceException: введите «Microsoft.SharePoint.SPWeb» в сборке «Microsoft.SharePoint, версия = 12.0.0.0, культура = нейтральная, PublicKeyToken = 71e9bce111e9429c» не помечена как сериализуемая. -> System.Runtime.Serialization.SerializationException: введите «Microsoft.SharePoint.SPWeb» в сборке «Microsoft.SharePoint, версия = 12.0.0.0, культура = нейтральная, 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); }
}
...
Я нашел два сообщения в блоге:
Существует одно решение этой проблемы: Не иметь сложные объекты-члены как глобальные переменные , но как локальные переменные - т.е. объявлять SPWeb локально (workflowProperties.Web) вместо глобального уровня .
Таким образом, мне пришлось бы переопределять spWeb для каждого метода, который я использую - который я считаю довольно уродливым.
Я тоже попробовал вот что:
...
[NonSerialized]
private SPWeb spWebtemp;
private SPWeb spWeb
{
get { return spWebtemp ?? (spWebtemp = workflowProperties.Web); }
}
...
==> больше не исключение сериализации!
Есть ли какие-либо негативные последствия при использовании атрибута NonSerialized
в этом поле?
Или другими словами - каковы последствия?