2016-05-24 6 views
1

ASP.NET MVCアプリケーションでSharePointプロバイダがホストするアドインでGlimpse(1.8.6)を使用しています。 1つの場所では、SharePointのイベントレシーバーを使用しています。これは、SharePointからASP.NET 5アプリケーションへの呼び出しで、Postalを使用して電子メールのレンダリングと送信を行います。特定のコードブロックのGlimpseを無効にする

これは、次のNullReference例外につながる:この要求は、ASP.NETアプリケーションSystem.Web.HttpContext.CurrentにユーザーのブラウザからではなくSharePointのからの呼び出しからトリガされませんので

at Glimpse.AspNet.AspNetFrameworkProvider.get_HttpRequestStore() 
at Glimpse.Core.Framework.Factory.<>c__DisplayClass5.<InstantiateRuntimePolicyStrategy>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) 

はnullです。 郵便局は、電子メールをレンダリングするためにRazorを使用しているため、Glimpseインターセプタを起動します。

この特定のコードブロックでGlimpseを無効にする可能性はありますか?

IRuntimePolicyカスタムを実装することは、この場合呼び出されない可能性はないようです。 this questionの回避策は、System.Web.HttpContext.CurrentがSharePointリモートイベント受信者ではnullであるため、いずれも無効です。 は、私はまた、次のコードを使用して、リモートイベントレシーバーのURLをブラックリストしようとしたが、垣間見るはまだ(リモートイベントレシーバーは、ディレクトリと呼ばれるサービスである)と呼ばれているようだ:

<runtimePolicies> 
    <uris> 
    <add regex=".*\/Services\/.*"/> 
    </uris> 
</runtimePolicies> 

コード作品defaultRuntimePolicy="Off"で。

答えて

0

regexの実行時ポリシーは、収集したデータの保存を単に止めますが、呼び出しスタックからわかるように、傍受者が要求を見ているのを止めることはありません。

あなたの設定の<glimpse>ノードにこれを追加することであることを無効にすることができます

<inspectors> 
    <ignoredTypes> 
     <add type="Glimpse.Mvc.Inspector.ViewEngineInspector, Glimpse.Mvc3" /> 
    </ignoredTypes> 
</inspectors> 
+0

感謝を!しかし、私はViewEngine検査を完全に無効にすると仮定します。私はそれをリモートイベント受信機の1つのコードブロックを除いてプロジェクト全体で有効にしたいと思います。 –

+0

あなたは正しいです。残念ながら、それを行う方法はありません。 :( – nikmd23

関連する問題