/// <summary> /// Find out whether it is an action or WebInvoke request. /// </summary> /// <param name="uriString">The request uri string</param> /// <returns>Whether it is an action or WebInvoke request</returns> internal bool IsInvokeOperationRequest(string uriString) { int operationNameStartIndex = uriString.LastIndexOf('/'); if (operationNameStartIndex > 0) { string functionName = uriString.Substring(operationNameStartIndex + 1); int queryOptionStartIndex = functionName.IndexOf('?'); if (queryOptionStartIndex > 0) { functionName = functionName.Substring(0, queryOptionStartIndex); } // find out if the function is an action or WebInvoke Function function = this.model.Functions.Where(f => f.Name == functionName).SingleOrDefault(); if (function != null) { ServiceOperationAnnotation serviceOperationAnnotation = function.Annotations.OfType <ServiceOperationAnnotation>().SingleOrDefault(); if (serviceOperationAnnotation != null) { return(serviceOperationAnnotation.IsAction); } LegacyServiceOperationAnnotation legacyServiceOperationAnnotation = function.Annotations.OfType <LegacyServiceOperationAnnotation>().SingleOrDefault(); if (legacyServiceOperationAnnotation != null) { return(legacyServiceOperationAnnotation.Method == HttpVerb.Post); } } } return(false); }
internal static bool IsSingleResultQueryableOrEnumerable(LegacyServiceOperationAnnotation svcOpAnnotation) { if (svcOpAnnotation == null) { return(false); } if (!svcOpAnnotation.SingleResult) { return(false); } return(svcOpAnnotation.ReturnTypeQualifier == ServiceOperationReturnTypeQualifier.IEnumerable || svcOpAnnotation.ReturnTypeQualifier == ServiceOperationReturnTypeQualifier.IQueryable); }