Asp.net 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方

我有一个web应用程序,其中集成了web API。创建了路由,当从本地主机调用时,它可以工作

当它被移动到生产服务器时,它会工作。但当添加SSL证书并修改web.config以重定向到HTTPS时,web API将停止在服务器中工作

它抛出404-找不到文件或目录

API控制器:

[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;