我在现有的MVC应用程序中创建了一个简单的Web API(通过添加API控制器)。我将API托管到localhost并创建了一个简单的html页面来调用服务并检查CORS。要启用我,请使用以下行更改我的web.config文件:
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
一切正常,API可以通过html页面访问localhost。
通过相同的更改,我将其托管在服务器(共享托管服务器)上。它正在抛出同样的恼人错误
XMLHttpRequest cannot load http://www.mywebsite.com/api/Booking. Invalid HTTP status code 405
根据Google上的搜索,它应该可以使用这些web.config更改。请帮助解决问题。
由于
答案 0 :(得分:0)
最后花了整整一天后才解决了这个问题,接着是“Yaser”发布的链接。
但我会说不容易这就是我在这里提到步骤的原因。
首先,我们需要通过Nuget“Install-Package Microsoft.AspNet.WebApi.Cors”安装软件包,但如果您的目标框架是4.0,则无法安装它。首先通过右键单击Project =&gt;转换为4.5;然后在应用程序选项卡中选择框架选择框架4.5
另一个问题是更改框架版本后,大多数dll都无法工作,再次右键单击解决方案并选择Manage Nuget Package并更新所有内容。 (在此之前收回你的项目)
如果一切正常,你只需一步之遥 - 在app_start文件夹下的webapiconfig.cs中添加以下行
<强> config.EnableCors(); 强>
之后打开API控制器,在控制器级别添加以下行
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class BookingController : ApiController
{
}
最后一步更改生产服务器上的web.config添加以下行(与localhost web.config比较)
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
所有进行新构建并用新的bin文件替换所有bin文件........:)
由于