Используйте ProcessStartInfo. Свойство WorkingDirectory.
Документы здесь .
Я понял это с небольшой помощью из Интернета: Хитрость заключается в том, что вы должны реализовать интерфейс ISerializable в своем классе, который реализует IIdentity. Надеюсь, это поможет кому-то еще немного сэкономить:)
Объявление класса:
[Serializable]
public class ForumUserIdentity : IIdentity, ISerializable
Реализация для ISerializable:
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (context.State == StreamingContextStates.CrossAppDomain)
{
GenericIdentity gIdent = new GenericIdentity(this.Name, this.AuthenticationType);
info.SetType(gIdent.GetType());
System.Reflection.MemberInfo[] serializableMembers;
object[] serializableValues;
serializableMembers = FormatterServices.GetSerializableMembers(gIdent.GetType());
serializableValues = FormatterServices.GetObjectData(gIdent, serializableMembers);
for (int i = 0; i < serializableMembers.Length; i++)
{
info.AddValue(serializableMembers[i].Name, serializableValues[i]);
}
}
else
{
throw new InvalidOperationException("Serialization not supported");
}
}
#endregion
Вот ссылка на статью, в которой есть более подробные сведения о «Feature»
У меня это работает, когда я наследую свой класс Identity от MarshalByRefObject
.
Также обратите внимание: при использовании Linq-to-Sql проблем не было. Я переключился на Entity-Framework и бах, я получил вышеуказанное сообщение.