Отключение Glimpse для определенного блока кодаC#

Место общения программистов C#
Ответить
Anonymous
 Отключение Glimpse для определенного блока кода

Сообщение Anonymous »

Я использую Glimpse (1.8.6) в надстройке, размещаемой у поставщика SharePoint, с приложением ASP.NET MVC. В одном месте мы используем приемник удаленных событий SharePoint, который представляет собой вызов из SharePoint в наше приложение ASP.NET 5, в котором мы используем Postal для обработки и отправки электронного письма.

Это приводит к следующему исключению NullReference:

Код: Выделить всё

at Glimpse.AspNet.AspNetFrameworkProvider.get_HttpRequestStore()
at Glimpse.Core.Framework.Factory.c__DisplayClass5.b__4()
at Glimpse.Core.Extensions.AlternateMethodContextExtensions.TryProceedWithTimer(IAlternateMethodContext context, TimerResult& timerResult)
at Glimpse.Core.Extensibility.AlternateMethod.NewImplementation(IAlternateMethodContext context)
at Glimpse.Core.Extensibility.AlternateTypeToCastleInterceptorAdapter.Intercept(IInvocation invocation)
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.IDependencyResolverProxy.GetServices(Type serviceType)
at System.Web.Mvc.DependencyResolverExtensions.GetServices[TService](IDependencyResolver resolver)
at System.Web.Mvc.MultiServiceResolver.GetCombined[TService](IList`1 items, IDependencyResolver resolver)
at System.Web.Mvc.ViewEngineCollection.get_CombinedItems()
at System.Web.Mvc.ViewEngineCollection.Find(Func`2 lookup, Boolean trackSearchedPaths)
at System.Web.Mvc.ViewEngineCollection.Find(Func`2 cacheLocator, Func`2 locator)
at System.Web.Mvc.ViewEngineCollection.FindView(ControllerContext controllerContext, String viewName, String masterName)
at Postal.EmailViewRenderer.CreateView(String viewName, ControllerContext controllerContext)
at Postal.EmailViewRenderer.Render(Email email, String viewName)
at Postal.EmailService.CreateMailMessage(Email email)
at Postal.EmailService.Send(Email email)
at CallSite.Target(Closure , CallSite , EmailService , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)
at MyWebApp.Services.MyRemoteEventReceiver.DoSomething(SPRemoteEventProperties properties) in d:\Repos\MyRemoteEventReceiver.svc.cs:line 331
at SyncInvokeProcessEvent(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
Поскольку этот запрос инициируется не вызовом браузера пользователя, а вызовом SharePoint к приложению ASP.NET, System.Web.HttpContext.Current имеет значение null.
С другой стороны, Postal использует Razor для обработки электронной почты и, следовательно, запускает перехватчик Glimpse.

Есть ли какая-либо возможность отключить Glimpse для этого конкретного блока кода?

Реализация пользовательского IRuntimePolicy не представляется возможной, поскольку в этом случае он не будет вызываться.
В этом вопросе также не предусмотрен обходной путь, поскольку System.Web.HttpContext.Current имеет значение null в удаленных приемниках событий SharePoint.
Я также пытался занести в черный список URL-адрес удаленного приемника событий с помощью следующего кода, но Glimpse, похоже, все еще вызывается (приемник удаленных событий находится в каталоге с именем Services):
При defaultRuntimePolicy="Off" код работает.

Подробнее здесь: https://stackoverflow.com/questions/374 ... code-block
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»