예제 #1
0
        public override async Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            string             mediaType;
            bool               flag;
            HttpRequestMessage request = actionContext.Request;
            string             raw     = await HttpRequestMessageExtensions.ToRaw(request);

            string str = raw;

            raw = null;
            HttpHeaderValueCollection <MediaTypeWithQualityHeaderValue> accept = request.Headers.Accept;

            if (accept != null)
            {
                MediaTypeWithQualityHeaderValue mediaTypeWithQualityHeaderValue = accept.SingleOrDefault <MediaTypeWithQualityHeaderValue>();
                if (mediaTypeWithQualityHeaderValue != null)
                {
                    mediaType = mediaTypeWithQualityHeaderValue.MediaType;
                }
                else
                {
                    mediaType = null;
                }
            }
            else
            {
                mediaType = null;
            }
            string str1 = mediaType;

            flag = (string.IsNullOrEmpty(str1) ? true : str1 == "*/*");
            if (flag)
            {
                str1 = "application/json";
            }
            if (str.StartsWith("<"))
            {
                str1 = "application/xml";
            }
            Func <string, object> item = this.ContentTypeResolvers[str1];

            actionContext.ActionArguments[base.Descriptor.ParameterName] = item(str);
        }