IIS启动行为问题(Web API)

本文关键字:Web API 问题 启动 IIS | 更新日期: 2023-09-27 18:15:25

我们已经使用IIS构建了n层应用程序,使用Web API提供RESTful服务。

不幸的是,当我们启动我们的应用程序视图,或从URL运行网站时,有时它工作,有时它失败,ArugmentException指出其中一个字段为空。我们把参数exception作为保护——但很明显,类型字段在不应该出现的时候出现了空值。

因为我们使用了基本的Web API模板,所以在Global.asax.cs中有如下一行:

RouteConfig.RegisterRoutes(RouteTable.Routes);

调用:

public class RouteConfig
  {
    public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}",
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  );
}

} '

现在这里要强调的是,这[几乎]总是在visual studio/IIS Express中工作。然而,当我们把它部署到IIS上,或者在visual studio环境之外的IIS Express上时,它就会变得不稳定,无法工作——但是如果你坚持下去,它最终会活过来。

到目前为止,我们已经尝试了:

  • 删除对ASP的任何引用。净2。我们可以找到。x(一切都是建立在。net 4.5)
  • 将以下内容添加到Web。配置:<modules runAllManagedModulesForAllRequests="true" />

欢迎任何进一步的想法-如果你需要任何额外的代码,让我知道,我会添加它(不知道确切需要什么)。

谢谢

IIS启动行为问题(Web API)

我会尝试在IIS下运行时调试web应用程序,这将忽略IIS Express和IIS(适当)之间的任何差异。

您可以在w3wp.exe进程运行时附加到它(Visual Studio, Debug -> attach)

在调试启动代码时,您可能需要包含对Debugger.Break()的调用,作为临时助手,以允许Visual Studio附加到该进程。