Asp.net 404在生产服务器中调用API时出错
我有一个web应用程序,其中集成了web API。创建了路由,当从本地主机调用时,它可以工作 当它被移动到生产服务器时,它会工作。但当添加SSL证书并修改web.config以重定向到HTTPS时,web API将停止在服务器中工作 它抛出404-找不到文件或目录 API控制器:Asp.net 404在生产服务器中调用API时出错,asp.net,asp.net-web-api,routes,asp.net-web-api2,Asp.net,Asp.net Web Api,Routes,Asp.net Web Api2,我有一个web应用程序,其中集成了web API。创建了路由,当从本地主机调用时,它可以工作 当它被移动到生产服务器时,它会工作。但当添加SSL证书并修改web.config以重定向到HTTPS时,web API将停止在服务器中工作 它抛出404-找不到文件或目录 API控制器: [Route("api/dashboard/{id}")] [HttpGet] public DataTable getDashboardDetails(int ID) { } 使用Web.config HTTPS方
[Route("api/dashboard/{id}")]
[HttpGet]
public DataTable getDashboardDetails(int ID)
{
}
使用Web.config
HTTPS方法:
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
RouteConfig.cs
routes.IgnoreRoute("api/{*pathInfo}");
Global.ascx.cs
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
还尝试从web.config文件中删除https数据,但抛出404错误。
请帮助让api也在服务器中工作
提前谢谢。我找到了解决办法。错误是因为重命名了项目 下面是另一个可能会遇到此错误的场景。如果我们重命名项目,使程序集的文件名发生更改,则可能会有两个版本的ASP.NET程序集,这将重现此错误
解决方法是转到bin文件夹并删除旧DLL。(我尝试了“重建项目”,但没有删除它们,所以一定要检查bin以确保它们消失)您在IIS中设置了哪些绑定
routes.IgnoreRoute("api/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;