gpt4 book ai didi

c# - 如何让 WebAPI HelpPage 包与 HotTowel 模板一起使用?

转载 作者:太空狗 更新时间:2023-10-30 00:11:10 27 4
gpt4 key购买 nike

我正在试用新的 Hot Towel约翰爸爸的模板。它真的很灵巧,但我在让它与我习惯使用的 Web API 协作时遇到了一些困难。

我能够解决路由问题,但我仍然无法获得 Microsoft.AspNet.WebApi.HelpPage包工作。

这是我所做的:

  • 安装 Hot Towel VSIX .
  • 新的 ASP.NET MVC4 项目 - Hot Towel SPA 模板
  • 构建、运行 - 有效。
  • 右键单击 Controllers 文件夹,添加名为 TestController 的 Controller 。
  • 选择“空 API Controller ”模板。
  • 在 TestController 中编写以下操作:

    public IEnumerable<string> GetTestData()
    {
    return new[] { "A", "B", "C" };
    }
  • 构建,运行。

  • 尝试 URL /api/test 得到错误 404 找不到资源。
  • 尝试 URL /api/test/gettestdata。有效。

然后我注意到 BreezeWebApiConfig.cs 已经更改了默认的 api 路由,并且 {action} 是必需的,所以我添加了默认的 api 路由:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

现在当我尝试 URL /api/test 时,它起作用了。

现在我想使用帮助包。

  • 添加 Microsoft.AspNet.WebApi.HelpPage nuget 包。
  • AreaRegistration.RegisterAllAreas(); 添加到 Global.asax.cs
  • 构建,运行。

当我尝试访问 URL /Help 时,出现以下错误:

System.InvalidOperationException: The view 'Index' or its master was not found
or no view engine supports the searched locations.
The following locations were searched:
~/Views/Help/Index.aspx
~/Views/Help/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Help/Index.cshtml
~/Views/Help/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml

在不破坏 HotTowel 模板的情况下解决此错误的正确方法是什么?

这些都应该被认为是错误吗?

最佳答案

安装 HotTowel 模板并创建应用程序然后安装 HelpPage 后,我注册了如下帮助页面区域:

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}

但这样做会导致可路由路由按以下顺序排列,并注意到与您提到的类似的问题。

a.Breeze Api route
b.HotTowel route
c.Help page route
d.ignored routes
e.RouteConfig routes

因此,我通过执行以下操作修复了上述路线顺序:

  1. 在 App_Start 文件夹下的配置文件中注释掉“[assembly: WebActivator.PreApplicationStartMethod”调用。

  2. 在 Global.asax.cs 中按以下顺序注册路由。这似乎解决了我看到帮助页面、调用 api 路由并相应地看到主页的问题。

    protected void Application_Start()
    {
    //help page
    AreaRegistration.RegisterAllAreas();

    //api
    BreezeWebApiConfig.RegisterBreezePreStart();

    //hot towel
    HotTowelRouteConfig.RegisterHotTowelPreStart();

    //register bundles
    HotTowelConfig.PreStart();

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    }

关于c# - 如何让 WebAPI HelpPage 包与 HotTowel 模板一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com