我在 Visual Studio 2019 中有一个包含两个项目的解决方案:
- 一个C# 类库(一个 WebAPI 项目)
- 一个C#控制台应用程序(一个OWIN SelfHost项目,参考项目1)
SelfHost 项目的唯一目的是 WebAPI可以在没有 Visual Studio的情况下运行。
当我在 Visual Studio 中运行WebAPI项目时,一切正常。提供静态内容,我可以通过浏览器调用它的 ApiControllers。
当我运行SelfHost项目时,浏览器无法调用/访问 ApiControllers。这可能是因为Global.asax中的以下代码没有被执行。不调用Application_Start方法:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
因此,不执行将控制器链接到 URI 的机制:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
所以症状可以解释,但如何解决?我尝试通过从 SelfHost 项目手动调用 GlobalConfiguration.Configure 方法来解决此问题,但随后出现以下错误:
'在应用程序的预启动初始化阶段不能调用此方法。'
任何帮助表示赞赏。