0

我们使用 IIS 构建了我们的 n 层应用程序,以使用 Web API 呈现 RESTful 服务。

不幸的是,当我们启动应用程序视图或从 URL 运行网站时,有时它可以工作,有时它会失败,并出现 ArugmentException 说明其中一个字段为空。然后我们将参数异常作为保护 - 但显然类型字段在不应该出现时显示为 null。

由于我们使用了基本的 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.NET 2.x 的任何引用(一切都建立在 .NET 4.5 上)
  • 将以下内容添加到 Web.Config: <modules runAllManagedModulesForAllRequests="true" />

欢迎任何进一步的想法 - 如果您需要任何其他代码,请告诉我,我会添加它(不确切知道可能需要什么)。

谢谢

4

1 回答 1

1

我会尝试在 IIS 下运行 Web 应用程序时对其进行调试,这将忽略 IIS Express 和 IIS(正确)之间的任何差异。

您可以在进程运行时附加到w3wp.exe进程(Visual Studio、调试 -> 附加)

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

于 2013-05-24T13:21:22.017 回答