私は問題を抱えていますが、同じトピックに対する答えはたくさんありましたが、本当にうまくいきませんでした。私はWebAPIプロジェクトとMVCを持っています。アンギュラプロジェクトからWebApi + AngularJS:405 Method Not Allowed
は、私はこのような何かを投稿しようとしている:
var promise = $http.post("http://localhost:55692/api/users", user)
.success(function (data) {
debugger;
console.log(data);
return data;
});
$http(
{
url: "http://localhost:55692/api/users",
method: "POST",
headers: { 'Content-Type': 'application/json' },
data: { "user": user }
})
.then(function (response) {
debugger;
console.log(data);
return data;
});
return promise;
あなたは、私はケースに二度同じAPIを呼んでいる表示された場合には、角度のことだが、私には、そうではありません..
私は私のAPIプロジェクトでこのコントローラを持っている:
[RoutePrefix("api/users")]
public class ValuesController : ApiController
{
[Route("")]
[HttpPost]
public HttpResponseMessage LoginOrRegister(RegisterUserViewModel user)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, true);
return response;
}
}
これは私が持っている応答である:
そして、これは私のWebConfigある
<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>
<!--<validation validateIntegratedModeConfiguration="false" />-->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, X-Token, X-Acting-As" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS,PATCH" />
</customHeaders>
</httpProtocol>
</system.webServer>
EDIT 私WebApiConfigは、次のようになります。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing enabled
config.MapHttpAttributeRoutes();
// Convention-based routing enabled
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Include;
// Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
// To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
// For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
//config.EnableQuerySupport();
// To disable tracing in your application, please comment out or remove the following line of code
// For more information, refer to: http://www.asp.net/web-api
config.EnableSystemDiagnosticsTracing();
}
}
最後に、 "奇妙な" 唯一のことは、私はIISExpressを使用しているということですこれらは私のプロジェクトの第一歩です。
誰か何が起こっているのか知っていますか?
'WebApiConfig.cs'の' Register'メソッドはどのように見えますか?また、一般的なアドバイスのように、コントローラの名前と一致しないルートプレフィックスを作成することは避けています。プロジェクトが大きくなると、コントローラ名がルートプレフィックスと一致しないときにコードをナビゲートすることがますます不満になります。あなたがチームに取り組んでいる場合は、さらにそうです。 – Lex
そこに、私はそれを加えました。そこにポイントがありますが、正直なところ、クロスドメインのものを動作させるためのテストコントローラーだけです。 –