Iis 7 WebAPI应用程序\u开始未在IIS服务器上执行

Iis 7 WebAPI应用程序\u开始未在IIS服务器上执行,iis-7,asp.net-web-api2,startup,Iis 7,Asp.net Web Api2,Startup,我正在构建一个新的WebAPI服务。到目前为止,它有一个端点调用我的逻辑项目中的方法,该方法调用我的EF存储库项目中的方法。当我在VisualStudio的IIS Express中运行它时,它会工作。当我将其发布到IIS站点(IIS 7.5)时,我得到一个404未找到,并且它看起来好像应用程序从未运行过。我向应用程序添加了代码以引发异常,但我从未看到该异常,只是404未找到。 我在Visual Studio 2015中创建了该服务。我使用了ASP.NET Web应用程序(.NET Framewo

我正在构建一个新的WebAPI服务。到目前为止,它有一个端点调用我的逻辑项目中的方法,该方法调用我的EF存储库项目中的方法。当我在VisualStudio的IIS Express中运行它时,它会工作。当我将其发布到IIS站点(IIS 7.5)时,我得到一个404未找到,并且它看起来好像应用程序从未运行过。我向应用程序添加了代码以引发异常,但我从未看到该异常,只是404未找到。 我在Visual Studio 2015中创建了该服务。我使用了ASP.NET Web应用程序(.NET Framework)项目类型。在该选择之后的对话框中,我选择了空模板并选中复选框以添加文件夹和Web API的核心引用。根据这些选择,项目安装了以下Nuget软件包:Microsoft.AspNet.WebApi、Microsoft.AspNet.WebApi.Client、Microsoft、AspNet.WebApi.Core和Microsoft.AspNet.WebApi.WebHost。(它还有一些其他的包,但这些都是WebApi包。 我的global.asax.cs代码如下所示:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        //throw new ApplicationException("This is just a test");
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
我的WebApiConfig.Register方法如下所示:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        //throw new ApplicationException("This is just a test");
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
但是,正如我所说,当我将代码部署到IIS时,我不相信上面的任何代码正在执行。当我在Application_Start中取消对throw语句的注释时,我从未看到抛出的异常。在调试此问题时,我有时也会睡一觉(60000)在Visual Studio中的IIS Express中运行的应用程序_Start.中的语句,我可以看到一分钟的延迟。当部署到IIS时,它会立即失败,并没有一分钟的延迟


什么会使应用程序_Start无法运行?

我发现了问题。为我的新服务提供服务的新IIS站点的应用程序池默认为.NET Framework v2而不是v4。当我将应用程序池更新为v4时,该服务开始工作。

我在复制bin\folder而不是发布时遇到了相同的错误