উত্তর:
আমি কেবল App_Start / WebApiConfig.cs
আমার এমভিসি ওয়েব এপিআই প্রকল্পে ক্লাসে নিম্নলিখিতগুলি যুক্ত করছি ।
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("text/html") );
এটি নিশ্চিত করে যে আপনি বেশিরভাগ প্রশ্নের জেএসএন পেয়েছেন তবে XML
আপনি প্রেরণ করতে পারবেন text/xml
।
আপনি প্রতিক্রিয়া আছে করার প্রয়োজন হলে Content-Type
যেমন application/json
দয়া করে চেক নিচে টড এর উত্তর ।
NameSpace
ব্যবহার করছে System.Net.Http.Headers
।
Content-Type
শিরোনামটি এখনও থাকবে text/html
।
আপনি যদি এটি করেন তবে WebApiConfig
আপনি ডিফল্টভাবে জেএসএন পাবেন, তবে আপনি যদি text/xml
অনুরোধ Accept
শিরোনাম হিসাবে পাস করেন তবে এটি আপনাকে এক্সএমএল ফেরত দেওয়ার অনুমতি দেবে
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
আপনি যদি এমভিসি প্রকল্পের ধরণটি ব্যবহার না করে থাকেন এবং তাই এই ক্লাসটি শুরু করার জন্য নেই, কীভাবে এটি অন্তর্ভুক্ত করবেন সে সম্পর্কিত বিশদগুলির জন্য এই উত্তরটি দেখুন ।
application/xml
0.9 এর */*
অগ্রাধিকার এবং 0.8 এর অগ্রাধিকার সহ অনুরোধ করে । মুছে ফেলার মাধ্যমে application/xml
আপনি যদি ক্লায়েন্টটি বিশেষভাবে এটির জন্য অনুরোধ করে তবে ওয়েব এপিআই XML ফিরিয়ে দেওয়ার ক্ষমতা সরিয়ে ফেলুন। যেমন আপনি যদি "স্বীকৃতি: অ্যাপ্লিকেশন / এক্সএমএল" প্রেরণ করেন তবে আপনি এখনও জেএসএন পাবেন।
অনুরোধহিডারম্যাপিং ব্যবহার করা আরও ভাল কাজ করে, কারণ এটি Content-Type = application/json
প্রতিক্রিয়া শিরোনামেও সেট করে , যা ফায়ারফক্সকে (জেএসএনভিউ অ্যাড-অন সহ) প্রতিক্রিয়াটিকে JSON হিসাবে ফর্ম্যাট করতে দেয়।
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings
.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept",
"text/html",
StringComparison.InvariantCultureIgnoreCase,
true,
"application/json"));
আমি ফিলিপ লিউসিনের পদ্ধতিকে সবচেয়ে বেশি পছন্দ করি - নিশ্চিত হয়ে নিন যে ব্রাউজারগুলি ক্লায়েন্টদের যেগুলি আসলে এক্সএমএল চায় তাদের কাছ থেকে বিষয়বস্তু সমঝোতা ছাড়াই জেএসএন পান। আমার একমাত্র অনুপস্থিত অংশটি ছিল যে প্রতিক্রিয়া শিরোনামগুলিতে এখনও সামগ্রী-প্রকার: পাঠ্য / এইচটিএমএল রয়েছে। কেন যে সমস্যা ছিল? কারণ আমি জেএসএন ফরম্যাট ক্রোম এক্সটেনশন ব্যবহার করি যা কন্টেন্ট-টাইপ পরীক্ষা করে এবং আমার ব্যবহার করা সুন্দর ফরম্যাটিংটি পাই না। আমি ঠিক করেছি যে একটি সাধারণ কাস্টম ফর্ম্যাটারের সাহায্যে পাঠ্য / এইচটিএমএল অনুরোধগুলি গ্রহণ করে এবং অ্যাপ্লিকেশন / জেসন প্রতিক্রিয়া রিটার্ন করে:
public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
public BrowserJsonFormatter() {
this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
this.SerializerSettings.Formatting = Formatting.Indented;
}
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType) {
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentType = new MediaTypeHeaderValue("application/json");
}
}
এর মতো নিবন্ধন করুন:
config.Formatters.Add(new BrowserJsonFormatter());
this.SerializerSettings.Formatting = Formatting.Indented;
আপনি এটি ব্রাউজারের এক্সটেনশান ছাড়াই প্রিন্ট-মুদ্রিত চান।
using System.Net.Http.Formatting
এবংusing Newtonsoft.Json
এমভিসি 4 দ্রুত টিপ # 3 A এএসপি.নেট ওয়েব এপিআই থেকে এক্সএমএল ফর্ম্যাটর সরানো
ইন Global.asax
লাইন যোগ করুন:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
তাই ভালো:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
BundleTable.Bundles.RegisterTemplateBundles();
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
}
ইন WebApiConfig.cs , শেষে যোগ নিবন্ধন ফাংশন:
// Remove the XML formatter
config.Formatters.Remove(config.Formatters.XmlFormatter);
উত্স ।
ইন Global.asax আমি নিচের কোড ব্যবহার করছি। জেএসএন পাওয়ার জন্য আমার ইউআরআইhttp://www.digantakumar.com/api/values?json=true
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));
}
ওয়েবএপিআইতে বিষয়বস্তু আলোচনার বিষয়ে একবার দেখুন। এগুলি ( পার্ট 1 এবং পার্ট 2 ) আশ্চর্যজনকভাবে বিস্তারিত এবং পুঙ্খানুপুঙ্খ ব্লগ পোস্টগুলি কীভাবে এটি কাজ করে তা ব্যাখ্যা করে।
সংক্ষেপে, আপনি ঠিক বলেছেন, এবং কেবলমাত্র শিরোনামগুলির অনুরোধ Accept
বা Content-Type
অনুরোধ করতে হবে। আপনার অ্যাকশনটি কোনও নির্দিষ্ট ফর্ম্যাটটি ফেরত দেওয়ার জন্য কোডড নয়, আপনি সেট করতে পারেন Accept: application/json
।
প্রশ্নটি ক্রোম-নির্দিষ্ট হওয়ায় আপনি পোস্টম্যান এক্সটেনশানটি পেতে পারেন যা আপনাকে অনুরোধ সামগ্রীর ধরণের সেট করতে দেয়।
network.http.accept.default
কনফিগারেশনের সামগ্রীটি এতে পরিবর্তন করুন text/html,application/xhtml+xml,application/json;q=0.9,application/xml;q=0.8,*/*;q=0.7
।
text/html,application/xhtml+xml;q=1.0,*/*;q=0.7
বিটবুকিটের মতো বগি হোস্টগুলি এইচটিএমএলটির পরিবর্তে আপনার ব্রাউজার জেএসএনকে দুর্ঘটনাক্রমে পরিবেশন করা থেকে বিরত রাখতে।
একটি দ্রুত বিকল্প হ'ল মিডিয়াটাইপম্যাপিং বিশেষজ্ঞকরণ। এখানে অ্যাপ্লিকেশন_স্টার্ট ইভেন্টে ক্যুরিস্ট্রিংম্যাপিং ব্যবহারের উদাহরণ রয়েছে:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("a", "b", "application/json"));
এখন যখনই ইউআরএলটিতে কোয়েরিস্ট্রিং? A = b রয়েছে, জাসন প্রতিক্রিয়াটি ব্রাউজারে দেখানো হবে।
এই কোডটি জসনকে আমার ডিফল্ট করে তোলে এবং আমাকে এক্সএমএল ফর্ম্যাটটিও ব্যবহার করতে দেয়। আমি শুধু সংযোজন করব xml=true
।
GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("xml", "true", "application/xml"));
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
ধন্যবাদ সবাইকে!
আপনার এপিআই পরীক্ষা করতে আপনার ব্রাউজারটি ব্যবহার করবেন না।
পরিবর্তে, এইচটিটিপি ক্লায়েন্ট ব্যবহার করার চেষ্টা করুন যা আপনাকে আপনার অনুরোধ যেমন সিআরএল, বা এমনকি ফিডলারের উল্লেখ করতে দেয়।
এই সমস্যাটি সমস্যাটি ক্লায়েন্টের মধ্যে, এপিআইতে নয়। ব্রাউজারের অনুরোধ অনুযায়ী ওয়েব এপিআই সঠিকভাবে আচরণ করে।
উপরের উত্তরগুলির বেশিরভাগই নিখুঁত ধারণা দেয়। যেহেতু আপনি এক্সএমএল ফর্ম্যাটে ডেটা ফর্ম্যাট করা দেখছেন, এর অর্থ XML ফর্ম্যাটারটি প্রয়োগ করা হয়েছে, সুতরাং আপনি এইচটিটিপি কনফিগারেশন প্যারামিটার থেকে এক্সএমএলফর্ম্যাটরটি সরিয়ে জেএসএন ফর্ম্যাটটি দেখতে পাচ্ছেন
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.EnableSystemDiagnosticsTracing();
}
যেহেতু JSON ডিফল্ট ফর্ম্যাট
Accept: application/xml
যখন User-Agent
শিরোনামটিতে "ক্রোম" রয়েছে তখন আমি সরানোর জন্য একটি বিশ্বব্যাপী অ্যাকশন ফিল্টার ব্যবহার করেছি :
internal class RemoveXmlForGoogleChromeFilter : IActionFilter
{
public bool AllowMultiple
{
get { return false; }
}
public async Task<HttpResponseMessage> ExecuteActionFilterAsync(
HttpActionContext actionContext,
CancellationToken cancellationToken,
Func<Task<HttpResponseMessage>> continuation)
{
var userAgent = actionContext.Request.Headers.UserAgent.ToString();
if (userAgent.Contains("Chrome"))
{
var acceptHeaders = actionContext.Request.Headers.Accept;
var header =
acceptHeaders.SingleOrDefault(
x => x.MediaType.Contains("application/xml"));
acceptHeaders.Remove(header);
}
return await continuation();
}
}
কাজ মনে হচ্ছে।
আমি Chrome অ্যাপ্লিকেশনটিকে "অ্যাডভান্সড আরএসটি ক্লায়েন্ট" টিইএসইএসটি পরিষেবাগুলির সাথে কাজ করার জন্য দুর্দান্ত দেখলাম। আপনি application/json
অন্যান্য জিনিসের মধ্যে কনটেন্ট-টাইপ সেট করতে পারেন :
অ্যাডভান্সড আরএসটি ক্লায়েন্ট
সঠিক ফর্ম্যাটটি ফিরিয়ে নেওয়া মিডিয়া-টাইপ ফর্ম্যাটর দ্বারা সম্পন্ন হয়। অন্যরা যেমন উল্লেখ করেছে, আপনি WebApiConfig
ক্লাসে এটি করতে পারেন :
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
...
// Configure Web API to return JSON
config.Formatters.JsonFormatter
.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));
...
}
}
আরও জন্য, পরীক্ষা করুন:
আপনার ক্রিয়াকলাপগুলি এক্সএমএল ফিরিয়ে দিচ্ছে (এটি ডিফল্টরূপে কেস) এবং আপনার জেএসওএন ফিরিয়ে দেওয়ার জন্য কেবল একটি নির্দিষ্ট পদ্ধতি প্রয়োজন, আপনি তারপরে একটিটি ব্যবহার করতে পারেন ActionFilterAttribute
এবং এটি নির্দিষ্ট ক্রিয়ায় প্রয়োগ করতে পারেন।
ফিল্টার বৈশিষ্ট্য:
public class JsonOutputAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
ObjectContent content = actionExecutedContext.Response.Content as ObjectContent;
var value = content.Value;
Type targetType = actionExecutedContext.Response.Content.GetType().GetGenericArguments()[0];
var httpResponseMsg = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
RequestMessage = actionExecutedContext.Request,
Content = new ObjectContent(targetType, value, new JsonMediaTypeFormatter(), (string)null)
};
actionExecutedContext.Response = httpResponseMsg;
base.OnActionExecuted(actionExecutedContext);
}
}
কর্মের জন্য আবেদন করা:
[JsonOutput]
public IEnumerable<Person> GetPersons()
{
return _repository.AllPersons(); // the returned output will be in JSON
}
মনে রাখবেন আপনি Attribute
অ্যাকশন সজ্জায় শব্দটি বাদ দিতে পারেন এবং কেবল [JsonOutput]
পরিবর্তে ব্যবহার করতে পারেন [JsonOutputAttribute]
।
config.Formatters.Remove(config.Formatters.XmlFormatter);
উত্তরে কেন এই জটিলতা রয়েছে তা আমার কাছে অস্পষ্ট। অবশ্যই ক্যোরিস্ট্রিংস, শিরোনাম এবং বিকল্পগুলির সাহায্যে আপনি এটি করতে পারেন এমন অনেকগুলি উপায় রয়েছে ... তবে আমি যা সেরা অনুশীলন বলে বিশ্বাস করি তা সহজ। আপনি একটি সরল ইউআরএল (উদাহরণ http://yourstartup.com/api/cars
:) এর জন্য অনুরোধ করুন এবং এর বিনিময়ে আপনি JSON পাবেন। আপনি যথাযথ প্রতিক্রিয়া শিরোনাম সহ JSON পান:
Content-Type: application/json
এই একই প্রশ্নের উত্তর খুঁজতে গিয়ে, আমি এই থ্রেডটি পেয়েছি এবং চালিয়ে যেতে হয়েছিল কারণ এই গৃহীত উত্তরটি ঠিক কাজ করে না। আমি এমন একটি উত্তর পেয়েছি যা আমি মনে করি যা সেরা খুব ভাল না হওয়া খুব সহজ:
ডিফল্ট ওয়েবএপিআই ফর্ম্যাটর সেট করুন
আমি এখানে আমার টিপ যোগ করব।
WebApiConfig.cs
namespace com.yourstartup
{
using ...;
using System.Net.Http.Formatting;
...
config.Formatters.Clear(); //because there are defaults of XML..
config.Formatters.Add(new JsonMediaTypeFormatter());
}
ডিফল্টগুলি (কমপক্ষে যাদের আমি দেখছি) কোথা থেকে এসেছে তা নিয়ে আমার একটি প্রশ্ন রয়েছে। তারা কি। নেট ডিফল্ট, বা সম্ভবত অন্য কোথাও তৈরি হয়েছে (আমার প্রকল্পের অন্য কারও দ্বারা)। আশা, আশা করি এটি সাহায্য করবে।
এখানে জয়েসন.সেটেনোর এবং অন্যান্য উত্তরের মতো একটি সমাধান রয়েছে তবে এর থেকে অন্তর্নির্মিত এক্সটেনশনটি ব্যবহার করা হচ্ছে System.Net.Http.Formatting
।
public static void Register(HttpConfiguration config)
{
// add support for the 'format' query param
// cref: http://blogs.msdn.com/b/hongyes/archive/2012/09/02/support-format-in-asp-net-web-api.aspx
config.Formatters.JsonFormatter.AddQueryStringMapping("$format", "json", "application/json");
config.Formatters.XmlFormatter.AddQueryStringMapping("$format", "xml", "application/xml");
// ... additional configuration
}
সমাধানটি প্রাথমিকভাবে WebApi এর প্রাথমিক প্রকাশে ওডাটা-র জন্য সমর্থন $ ফর্ম্যাট করার দিকে তত্পর হয়েছিল, তবে এটি অ-ওডাটা বাস্তবায়নের ক্ষেত্রেও প্রযোজ্য এবং Content-Type: application/json; charset=utf-8
প্রতিক্রিয়াটিতে শিরোনামটি প্রদান করে
।
এটি আপনাকে ব্রাউজারের সাথে পরীক্ষা করার সময় আপনার ইউরির শেষ অংশটিকে মোকাবেলা করতে &$format=json
বা অনুমতি দেয় &$format=xml
। ব্রাউজারবিহীন ক্লায়েন্ট ব্যবহার করার সময় এটি অন্যান্য প্রত্যাশিত আচরণে হস্তক্ষেপ করে না যেখানে আপনি নিজের শিরোনাম সেট করতে পারেন।
আপনি নীচের হিসাবে ব্যবহার করতে পারেন:
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter());
আপনার WebApiConfig শ্রেণিতে এই দুটি লাইন কোড যুক্ত করুন
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//add this two line
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
............................
}
}
আপনি কেবল এটির App_Start/WebApiConfig.cs
মতো পরিবর্তন করুন :
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
//Below formatter is used for returning the Json result.
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
//Default route
config.Routes.MapHttpRoute(
name: "ApiControllerOnly",
routeTemplate: "api/{controller}"
);
}
এমএসডিএন এএসপি.এনইটি এবং অ্যাঙ্গুলারজেএস (প্রায় 41 মিনিটের মধ্যে) দিয়ে একটি একক পৃষ্ঠা অ্যাপ্লিকেশন তৈরি করা থেকে ।
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// ... possible routing etc.
// Setup to return json and camelcase it!
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
এটি বর্তমান হওয়া উচিত, আমি এটি চেষ্টা করেছিলাম এবং এটি কাজ করে।
এই প্রশ্নটি জিজ্ঞাসা করার (এবং উত্তর দেওয়া) কিছু সময় কেটে গেছে তবে আরেকটি বিকল্প হ'ল সার্ভারের স্বীকৃতি শিরোনামকে অনুরোধ প্রক্রিয়াকরণের সময় নীচের মত একটি বার্তা হ্যান্ডলার ব্যবহার করে ওভাররাইড করা হবে:
public class ForceableContentTypeDelegationHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var someOtherCondition = false;
var accHeader = request.Headers.GetValues("Accept").FirstOrDefault();
if (someOtherCondition && accHeader.Contains("application/xml"))
{
request.Headers.Remove("Accept");
request.Headers.Add("Accept", "application/json");
}
return await base.SendAsync(request, cancellationToken);
}
}
someOtherCondition
ব্রাউজারের ধরণ ইত্যাদিসহ কিছু যেখানে থাকতে পারে, এটি শর্তযুক্ত ক্ষেত্রে যেখানে কেবল কখনও কখনও আমরা ডিফল্ট সামগ্রী আলোচনাকে ওভাররাইড করতে চাই। অন্যথায় অন্যান্য উত্তর হিসাবে, আপনি কেবল কনফিগারেশন থেকে একটি অপ্রয়োজনীয় বিন্যাস অপসারণ করতে হবে।
আপনার অবশ্যই এটি নিবন্ধন করতে হবে। আপনি হয় বিশ্বব্যাপী এটি করতে পারেন:
public static void Register(HttpConfiguration config) {
config.MessageHandlers.Add(new ForceableContentTypeDelegationHandler());
}
বা রুট ভিত্তিতে একটি রুটে:
config.Routes.MapHttpRoute(
name: "SpecialContentRoute",
routeTemplate: "api/someUrlThatNeedsSpecialTreatment/{id}",
defaults: new { controller = "SpecialTreatment" id = RouteParameter.Optional },
constraints: null,
handler: new ForceableContentTypeDelegationHandler()
);
আর এই থেকে একটি বার্তা হ্যান্ডলার এটা অনেক একটি মত পাইপলাইন উভয় অনুরোধ এবং প্রতিক্রিয়া প্রান্ত চালানো হবে HttpModule
। সুতরাং আপনি সহজেই একটি কাস্টম শিরোলেখ দিয়ে ওভাররাইড স্বীকার করতে পারেন:
public class ForceableContentTypeDelegationHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var wasForced = false;
var someOtherCondition = false;
var accHeader = request.Headers.GetValues("Accept").FirstOrDefault();
if (someOtherCondition && accHeader.Contains("application/xml"))
{
request.Headers.Remove("Accept");
request.Headers.Add("Accept", "application/json");
wasForced = true;
}
var response = await base.SendAsync(request, cancellationToken);
if (wasForced){
response.Headers.Add("X-ForcedContent", "We overrode your content prefs, sorry");
}
return response;
}
}
এখানে আমি আমার অ্যাপ্লিকেশনগুলিতে সবচেয়ে সহজ উপায়টি ব্যবহার করেছি। মধ্যে কোডের 3 লাইন নিচে দেওয়া যোগ App_Start\\WebApiConfig.cs
মধ্যে Register
ফাংশন
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.XmlFormatter);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
Asp.net ওয়েব API স্বয়ংক্রিয়ভাবে আপনার রিটার্নিং অবজেক্টটি JSON এ সিরিয়ালাইজ করবে এবং হেডারটিতে application/json
যেমন যোগ করা হবে তাই ব্রাউজার বা রিসিভার বুঝতে পারে যে আপনি JSON ফলাফলটি ফিরিয়ে দিচ্ছেন।
ওয়েবসিপিফনফিগ এমন এক জায়গা যেখানে আপনি জেএসন বা এক্সএমএল আউটপুট করতে চান তা কনফিগার করতে পারেন। ডিফল্টরূপে এটি এক্সএমএল। রেজিস্টার ফাংশনে আমরা আউটপুট ফর্ম্যাট করতে HTTPConfigration ফর্ম্যাটর ব্যবহার করতে পারি। System.Net.Http.Heilers => MediaTypeHeaderValue ("পাঠ্য / এইচটিএমএল") জসন ফর্ম্যাটে আউটপুট পেতে প্রয়োজনীয়।
ব্যবহার ফেলিপে Leusin বছর ধরে এর উত্তর কোর লাইব্রেরি এবং Json.Net একটি সাম্প্রতিক আপডেটের পরে, আমি একটা দৌড়ে System.MissingMethodException
SupportedMediaTypes। আমার ক্ষেত্রে সমাধানটি আশা করি অন্যদের জন্য একই অপ্রত্যাশিত ব্যতিক্রমের জন্য সহায়ক, এটি ইনস্টল করা System.Net.Http
। নিউগেট দৃশ্যত কিছু পরিস্থিতিতে এটি সরিয়ে দেয়। একটি ম্যানুয়াল ইনস্টলেশন পরে সমস্যাটি সমাধান করা হয়েছিল।
আমি অনেক একটি একক ব্যবহারের ক্ষেত্রে (Get) এ পরিবর্তন করতে কোডিং প্রয়োজন উত্তর দেখতে বিস্মিত নই এক এপিআই পরিবর্তে কি একবার ইনস্টল করা হয়েছে এবং জন্য ব্যবহার করা যেতে পারে একটি সঠিক টুল ব্যবহার করে কোন এপিআই (নিজের বা 3 য় পক্ষের) এবং সমস্ত ব্যবহারের ক্ষেত্রে.
সুতরাং ভাল উত্তরটি হ'ল: