我正在构建一个新的WebAPI服务。到目前为止,它有一个端点调用我的Logic项目中的一个方法,该方法调用我的EF Repository项目中的方法。它在Visual Studio中的IIS Express中运行时有效。当我将它发布到IIS站点(IIS 7.5)时,我得到404 Not Found,看起来好像application_start永远不会运行。我向application_start添加了代码以抛出异常,我从未看到异常,只有404 Not Found。 我在Visual Studio 2015中创建了该服务。我使用了ASP.NET Web应用程序(.NET Framework)项目类型。在该选择之后的对话框中,我选择了Empty模板并选中复选框以添加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);
}
}
我的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语句时,我从未看到抛出的异常。我有时在调试此问题时,在Application_Start中有一个Sleep(60000)语句。在Visual Studio中运行IIS Express,我可以看到延迟一分钟。当部署到IIS时,它会立即失败,并且没有一分钟的延迟。
什么会使Application_Start 不运行?
答案 0 :(得分:2)
I found the issue. The new IIS site that was serving up my new service had an app pool that defaulted to .NET Framework v2 instead of v4. When I updated the app pool to v4, the service started working.