मेरे पास एक वेब एपीआई नियंत्रक है। यह बहुत अजीब व्यवहार करता है। जब मैं PostMan का उपयोग करता हूं तो मैं वेब एपीआई पर POST विधि तक पहुंच सकता हूं लेकिन जब मैं .NET से HttpWebRequest का उपयोग करता हूं तो यह लौटाता है (405) विधि अनुमत नहीं है। मैं यहाँ वेब एपीआई कोड डाल:एएसपी.नेट वेबएपीआई: (405) विधि अनुमत नहीं
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace MyProject
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
);
}
}
}
यह कैसे मैं एक और नेट परियोजना से पोस्ट अनुरोध भेज है:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace MyProject.Controllers
{
public static class WebReq
{
public static string PostRequest(string Url, string postParameters)
{
try
{
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(Url);
myReq.Method = "POST";
myReq.Timeout = 30000;
myReq.Proxy = null;
byte[] postData = Encoding.UTF8.GetBytes(postParameters);
myReq.ContentLength = postData.Length;
myReq.ContentType = "application/x-www-form-urlencoded";
using (Stream requestWrite = myReq.GetRequestStream())
{
requestWrite.Write(postData, 0, postData.Length);
requestWrite.Close();
using (HttpWebResponse webResponse = (HttpWebResponse)myReq.GetResponse())
{
if (webResponse.StatusCode == HttpStatusCode.OK)
{
using (Stream str = webResponse.GetResponseStream())
{
using (StreamReader sr = new StreamReader(str))
{
return sr.ReadToEnd();
}
}
}
return null;
}
}
}
catch (Exception e)
{
var message = e.Message;
return null;
}
}
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
namespace MyProject.Controllers
{
public class TestController : ApiController
{
[HttpPost]
public int buy(OrderResult value)
{
try
{
if (value.InvoiceDate != null && value.Result == 1)
{
return 0;
}
}
catch{}
return -1;
}
}
public class OrderResult
{
public int Result { get; set; }
public long InvoiceNumber { get; set; }
public string InvoiceDate { get; set; }
public long TimeStamp { get; set; }
}
}
यहाँ मेरी WebApiConfig.cs है
मैंने पहले से ही अपने वेब.config में निम्न कोड जोड़ा है:
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
यह अजीब बात है क्योंकि मैं PostMan से सफलतापूर्वक POST अनुरोध भेज सकता हूं। PostMan एपीआई को यह कोड भेजो।
POST /api/Test/buy HTTP/1.1
Host: domain.com
Cache-Control: no-cache
Postman-Token: 9220a4e6-e707-5c5f-ea61-55171a5dd95f
Content-Type: application/x-www-form-urlencoded
InvoiceDate=28012016&Result=1
मैं समस्या को हल करने के लिए किसी भी सुझाव की सराहना करता हूं।
यह एक कॉरस मुद्दा नहीं है, जो वास्तव में मेरा पहला विचार था लेकिन ओपी पूरी तरह से एक सर्वर/एप्लिकेशन से चल रहा है जो ब्राउज़र + AJAX में नहीं है। –
आआ हाँ आप सही हैं .. क्षमा करें: डी – hellwd