SecurityException было необработанным, связанным с IPropertyNotify

Я столкнулся с проблемой с IPropertyNotify. У меня есть объект (DataPoint), который определен и создан в.dll, на которую я ссылаюсь в своем проекте WPF. Я пытаюсь установить привязку с DataPoint.Value и TextBox в форме WPF. Тем не менее, когда я вызываю PropertyNotify в DataPoint, я получаю сообщение об ошибке SecurityException, которая не обрабатывается и абсолютно не содержит отладочной информации, так как "символы не загружены ни для одного фрейма стека вызовов. Исходный код не может быть отображен". Кроме того, он говорит мне, что мне нужно, чтобы Full Trust работал правильно, несмотря на то, что он полностью запущен на одном настольном компьютере без сети вообще.

System.Security.SecurityException was unhandled
  HResult=-2146233078
  Message=Request failed.
  Source=mscorlib
  StackTrace:
       at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags)
       at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, IRuntimeMethodInfo method, RuntimeType parent, UInt32 invocationFlags)
       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
       at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
       at MS.Internal.Data.PropertyPathWorker.GetValue(Object item, Int32 level)
       at MS.Internal.Data.PropertyPathWorker.RawValue(Int32 k)
       at MS.Internal.Data.PropertyPathWorker.RawValue()
       at MS.Internal.Data.ClrBindingWorker.RawValue()
       at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
       at System.Windows.Data.BindingExpression.ScheduleTransfer(Boolean isASubPropertyChange)
       at MS.Internal.Data.ClrBindingWorker.NewValueAvailable(Boolean dependencySourcesChanged, Boolean initialValue, Boolean isASubPropertyChange)
       at MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(Int32 k, ICollectionView collectionView, Object newValue, Boolean isASubPropertyChange)
       at MS.Internal.Data.ClrBindingWorker.ScheduleTransferOperation(Object arg)
       at MS.Internal.Data.DataBindOperation.Invoke()
       at MS.Internal.Data.DataBindEngine.ProcessCrossThreadRequests()
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.DispatcherOperation.InvokeImpl()
       at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.ProcessQueue()
       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
       at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
       at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
       at System.Windows.Threading.Dispatcher.Run()
       at System.Windows.Application.RunDispatcher(Object ignore)
       at System.Windows.Application.RunInternal(Window window)
       at System.Windows.Application.Run(Window window)
       at System.Windows.Application.Run()
       at EmulationGUIRewriteTest.App.Main()
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

это то, что я могу вытащить из исключения. Я попытался вызвать вызов метода ProperyChanged, но это, похоже, совсем не улучшило его, и я даже попробовал это на совершенно новом решении, исключающем любые изменения безопасности, которые я мог случайно сделать.

Все исследования по этому поводу привели меня к вещам, связанным с веб-серверами или аналогичными, так что я совершенно в тупике.

Код привязки выглядит следующим образом:

TextBox c = new TextBox();
c.Text = data.Value.ToString();

Binding b = new Binding();
b.Path = new PropertyPath("Value");
b.Mode = BindingMode.TwoWay;
b.Source = data;
b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

c.SetBinding(TextBox.TextProperty, b);

Метод PropertyChanged выглядит следующим образом:

void OnPropertyChanged(string name)
{
    if (PropertyChanged != null)
    {
        PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
        Console.WriteLine("TESTTESTTEST");
    }
}

Console.WriteLine() срабатывает, как я вижу, на выходе непосредственно перед исключением безопасности.

0 ответов

Другие вопросы по тегам