本文整理汇总了C#中System.ServiceModel.Description.OperationDescription.GetWebAttributeInfo方法的典型用法代码示例。如果您正苦于以下问题:C# OperationDescription.GetWebAttributeInfo方法的具体用法?C# OperationDescription.GetWebAttributeInfo怎么用?C# OperationDescription.GetWebAttributeInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.ServiceModel.Description.OperationDescription
的用法示例。
在下文中一共展示了OperationDescription.GetWebAttributeInfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ValidateOperation
protected void ValidateOperation (OperationDescription operation)
{
var wai = operation.GetWebAttributeInfo ();
if (wai.Method == "GET")
return;
var style = GetBodyStyle (wai);
// if the style is wrapped there won't be problems
if (style == WebMessageBodyStyle.Wrapped)
return;
string [] parameters;
if (wai.UriTemplate != null) {
// find all variables in the URI
var uri = new UriTemplate (wai.UriTemplate);
parameters = new string [uri.PathSegmentVariableNames.Count + uri.QueryValueVariableNames.Count];
uri.PathSegmentVariableNames.CopyTo (parameters, 0);
uri.QueryValueVariableNames.CopyTo (parameters, uri.PathSegmentVariableNames.Count);
// sort because Array.BinarySearch is the easiest way for case-insensitive search
Array.Sort (parameters, StringComparer.InvariantCultureIgnoreCase);
} else
parameters = new string [0];
bool hasBody = false;
foreach (var msg in operation.Messages) {
if (msg.Direction == MessageDirection.Input) {
// the message is for a request
// if requests are wrapped there is nothing to check
if (style == WebMessageBodyStyle.WrappedRequest)
continue;
foreach (var part in msg.Body.Parts) {
if (Array.BinarySearch (parameters, part.Name, StringComparer.InvariantCultureIgnoreCase) < 0) {
// this part of the message is not covered by a variable in the URI
// so it must be passed in the body
if (hasBody)
throw new InvalidOperationException (String.Format ("Operation '{0}' has multiple message body parts. Add parameters to the UriTemplate or change the BodyStyle to 'Wrapped' or 'WrappedRequest' on the WebInvoke/WebGet attribute.", operation.Name));
hasBody = true;
}
}
} else {
// the message is for a response
if (style != WebMessageBodyStyle.WrappedResponse && msg.Body.Parts.Count > 0)
throw new InvalidOperationException (String.Format ("Operation '{0}' has output parameters. BodyStyle must be 'Wrapped' or 'WrappedResponse' on the operation WebInvoke/WebGet attribute.", operation.Name));
}
}
}