【问题标题】:Generating controllers in a ASP.NET Web API Self-Host application在 ASP.NET Web API 自托管应用程序中生成控制器
【发布时间】:2012-11-05 13:04:07
【问题描述】:

Visual Studio 2012 中的 ASP.NET Web API 项目模板是一个专门的 MVC4 项目,在创建此类项目的实例后,右键单击“控制器”文件夹会显示“添加 >> 控制器”菜单项,它会触发控制器发生器。 (脚手架)

另一方面,也可以在控制台应用程序中托管 ASP.NET Web API 服务器,在文档中称为自托管应用程序。

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

我的问题是: 如果我正在开发自托管控制台应用程序,如何使用“控制器脚手架”?

【问题讨论】:

    标签: visual-studio-2012 asp.net-web-api


    【解决方案1】:

    仍然通过包管理器控制台支持脚手架,例如here.

    但 MVC 特定的“添加控制器”对话框确实是为 MVC 项目文件保留的。

    但是,您可以强制您的自托管项目包含此对话框。

    这可以通过在项目文件中添加一行来“欺骗”Visual Studio 使其认为您的自托管应用程序是 MVC 应用程序来实现。详情见这个问题"Add Controller" / "Add View" in a hybrid MVC/WebForms ASP.NET application

    如果你:

    1. 在您的项目根目录下创建一个 Controllers 文件夹
    2. 鼠标右键你自己的宿主项目文件和“卸载项目”
    3. 鼠标右键你自己的宿主项目文件“编辑”
    4. 在 Xml > Project -> PropertyGroup 下添加步骤如下所示的节点
    5. 保存
    6. 鼠标右键你自己的宿主项目文件点击重新加载项目

      <ProjectTypeGuids> 
          {E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
      </ProjectTypeGuids>
      

    完成此操作后,您可以开始使用 TT 文件(支架),以使它们对自托管更有用/更具体http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx

    【讨论】:

    • 这看起来是一个非常酷的解决方案。我按照你说的做了(并像 Hanselman 在他的博客文章中所说的那样将模板文件复制到我的项目中)。 Visual Studio 在重新加载项目后进行了某种升级。我猜这是预料之中的。现在我可以打开“添加控制器”对话框,但在尝试生成时会出错。 >> 相信我,EmployeeContext 确实存在于 app.config 文件中。
    • 您要构建什么样的控制器/模板? (标准 EF ?有点长镜头,但也许值得添加一个虚拟 web.config 以查看模板是否倾向于寻找 web 内容而不是 app.config。
    • 不知何故关闭并重新启动 Visual Studio 就可以了。现在它确实看到了 Context 但不能生成控制器说 >> 我正在使用 MySql 数据库。我想这就是问题所在。无论如何......很好的解决方案。谢谢...
    • 很高兴它有帮助,如果不是一个完整的修复。我自己刚刚完成了这些步骤,包括 EF 脚手架。它有效,但我正在创建一个
    【解决方案2】:

    我认为目前这是不可能的。这种脚手架支持目前特定于 MVC 4 项目。

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2018-12-24
      • 2013-03-09
      • 2016-01-21
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多