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应用程序,这将忽略IIS Express和IIS(适当)之间的任何差异。
您可以在w3wp.exe
进程运行时附加到它(Visual Studio, Debug -> attach)
在调试启动代码时,您可能需要包含对Debugger.Break()
的调用,作为临时助手,以允许Visual Studio附加到该进程。