मुझे नहीं लगता कि यह बॉक्स से बाहर है, उदाहरण के लिए [FromBody] विशेषता के साथ। ऐसा लगता है कि आप मॉडल बाइंडर्स का उपयोग कर इस कार्यक्षमता को प्राप्त करने में सक्षम होना चाहिए, जैसा कि here वर्णित है। मॉडल बाइंडर में आपके पास अनुरोध और उसके शीर्षलेख तक पहुंच है, इसलिए आपको हेडर पढ़ने और बाध्यकारी कॉन्टैक्ट.मोडेल प्रॉपर्टी पर अपना मान सेट करने में सक्षम होना चाहिए।
संपादित करें: लेख को और पढ़ें, ऐसा लगता है कि एक कस्टम एचटीपी पैरामीटर बाइंडिंग और पैरामीटर बाइंडिंग एट्रिब्यूट एक और उचित समाधान है, या कम से कम मैं इस तरह से जाऊंगा। आप एक सामान्य [FromHeader] विशेषता लागू कर सकते हैं, जो नौकरी करता है। मैं भी एक ही समस्या से लड़ रहा हूं, इसलिए जब मैं इसे जगह लेता हूं तो मैं अपना समाधान पोस्ट करूंगा।
संपादित करें 2:
public class FromHeaderBinding : HttpParameterBinding
{
private string name;
public FromHeaderBinding(HttpParameterDescriptor parameter, string headerName)
: base(parameter)
{
if (string.IsNullOrEmpty(headerName))
{
throw new ArgumentNullException("headerName");
}
this.name = headerName;
}
public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)
{
IEnumerable<string> values;
if (actionContext.Request.Headers.TryGetValues(this.name, out values))
{
actionContext.ActionArguments[this.Descriptor.ParameterName] = values.FirstOrDefault();
}
var taskSource = new TaskCompletionSource<object>();
taskSource.SetResult(null);
return taskSource.Task;
}
}
public abstract class FromHeaderAttribute : ParameterBindingAttribute
{
private string name;
public FromHeaderAttribute(string headerName)
{
this.name = headerName;
}
public override HttpParameterBinding GetBinding(HttpParameterDescriptor parameter)
{
return new FromHeaderBinding(parameter, this.name);
}
}
public class MyHeaderAttribute : FromHeaderAttribute
{
public MyHeaderAttribute()
: base("MyHeaderName")
{
}
}
तो फिर तुम इसे इस तरह उपयोग कर सकते हैं:
[HttpGet]
public IHttpActionResult GetItem([MyHeader] string headerValue)
{
...
}
आशा है कि मदद करता है यहाँ मेरी कार्यान्वयन है।
यह वही है जो मैं ढूंढ रहा था। धन्यवाद। –
क्या [FromHeader ("MyHeader")] आपके कोड के साथ भी काम करेगा? –