当前位置: 首页>>代码示例>>C#>>正文


C# OperationDescription.GetWebAttributeInfo方法代码示例

本文整理汇总了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));
				}
			}
		}
开发者ID:nlhepler,项目名称:mono,代码行数:49,代码来源:WebHttpBehavior.cs


注:本文中的System.ServiceModel.Description.OperationDescription.GetWebAttributeInfo方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。