J'ai un contrôleur Web Api et j'ai testé toutes les actions sur localhost et cela fonctionne bien.Mais quand je l'ai publié sur le serveur Web, Just Actions avec [HttpGet]
fonctionne et [HttpPost]
Actions retour Http erreur 405Erreurs HTTP 405 après la publication de l'API Web 2 Applications
public class ContentController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> AdvantageList()
{
//return ok 200
}
[HttpPost]
public async Task<IHttpActionResult> SaveAdvantage(ContentModel model)
{
//return 405
}
}
je méthode ci-dessous sur le client
var r = await ClientManager.Client.PostAsJsonAsync("api/Content/SaveAdvantage", Advantage);
mais ce sera retrun ci-dessous formulaire de réponse server.I Utilisé PostAsJsonAsync
méthode, mais il dit que The requested resource does not support http method 'GET'
Quelqu'un sait-il pourquoi?
{ StatusCode: 405, ReasonPhrase: 'Méthode non autorisée', Version: 1.0, Contenu: System.Net.Http.StreamContent, en-têtes: { Pragma: no-cache Powered-By-X -Plesk: PleskWin Connection: close cache-Control: no-cache date: ven 29 septembre 2017 08:53:51 GMT serveur: Microsoft-IIS/8.0 X-réSEAU-version: 4.0.30319 X -Powered-By: ASP.NET Longueur du contenu: 72 Autoriser: POST Type de contenu: application/json; charset = utf-8 Expires: -1 }}
Et
"{\" un message \ ": \". La ressource demandée ne supporte pas la méthode http 'GET' \ » } »
je le ci-dessous dans ma config web api:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}");
config.Routes.MapHttpRoute("WithId", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute("TwoId", "api/{controller}/{action}/{id}/{id2}", new { id = RouteParameter.Optional, id2 = RouteParameter.Optional });
config.MapHttpAttributeRoutes();
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
}
J'ai ci-dessous les gestionnaires dans Web.config
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
J'utilise cette application webapi2 dans mon application Winform.
Non, ce contorller est permis pour anonymouse, si cette raison a fait problème pourquoi je reçois tout le contenu avantage avec succès? – mohsen