private IHtmlString PerformInvoke(DisplayContext displayContext, MethodInfo methodInfo, object serviceInstance) {
            var output = new HtmlStringWriter();
            var arguments = methodInfo.GetParameters()
                .Select(parameter => BindParameter(displayContext, parameter, output));

            var returnValue = methodInfo.Invoke(serviceInstance, arguments.ToArray());
            if (methodInfo.ReturnType != typeof(void)) {
                output.Write(CoerceHtmlString(returnValue));
            }
            return output;
        }
 private IHtmlString PerformInvoke(DisplayContext displayContext, MethodInfo methodInfo, object serviceInstance)
 {
     var output = new HtmlStringWriter();
     var arguments = methodInfo.GetParameters()
         .Select(parameter => BindParameter(displayContext, parameter, output));
     try {
         var returnValue = methodInfo.Invoke(serviceInstance, arguments.ToArray());
         if (methodInfo.ReturnType != typeof(void)) {
             output.Write(CoerceHtmlString(returnValue));
         }
         return output;
     }
     catch(TargetInvocationException e) {
         // Throwing a TIE here will probably kill the web process
         // in Azure. For unknown reasons.
         throw e.InnerException;
     }
 }