【问题标题】:ASP.NET 5 and RazorEngine - Unit test works but web API failsASP.NET 5 和 RazorEngine - 单元测试有效,但 Web API 失败
【发布时间】:2015-11-07 23:21:51
【问题描述】:

我有一个在 ASP.NET 5 中创建的 Web API 项目。Web API 使用 RazorEngine (v3.7.0) 来解析模板。

解析逻辑在类库中。正是这个类库进行了实际的解析。 Web API 调用这个类库。具有解析逻辑的类名为 TemplateParser,解析模板的方法名为 Parse()。

我有一个单元测试项目来调用 TemplateParser.Parse()。此单元测试运行良好。

但是,当我通过调用 Web API 调用相同的方法时,我得到了下面提到的错误。错误是找不到 System.Web.Razor 程序集,版本 3.0.0.0。

发生 System.IO.FileNotFoundException FileName=System.Web.Razor,版本=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35

但是,为什么单元测试有效呢?

我正在使用 VS 2015 社区版。

为了调试,我使用 F5 运行 web api 项目,然后从外部调用 API。我为我的 Web 服务器使用“Web”选项(现在,我没有使用 IIS express)。

我在 web api 和类库中都使用了 dnx46 版本的框架。

【问题讨论】:

    标签: razor asp.net-core razorengine .net-4.6


    【解决方案1】:

    将此添加到项目的 project.json 文件中的依赖项中,会出现错误:

    "Microsoft.AspNet.Mvc.Razor":  "6.0.0-beta5" //or whichever version you want
    

    编辑:

    //inside of 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    
        app.UseMvc(routes =>
        {
             routes.MapRoute(
             name: "default",
             template: "{controller=Home}/{action=Index}/{id?}");
        });
    

    【讨论】:

    • Microsoft.AspNet.Mvc.Razor 不可用。但是已经有对 Microsoft.AspNet.Razor 的引用。
    • 您确定您使用的是 ASP.NET 5 项目吗?如果你是,那么它将可用。
    • 好的,我通过从头开始创建一个新的 ASP.NET 5 项目再次进行了测试。这一次,我确实看到了 Microsoft.AspNet.Mvc.Razor,并包含了它。为了使其尽可能简单,我直接在 API 中添加了 RazorEngine 模板处理代码。但我仍然遇到同样的错误。
    • 我对我的答案进行了编辑。您是否已将应用程序设置为在 Startup.cs 文件中使用 MVC?
    • 是的,startup.cs 已设置为使用 MVC。
    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 2010-11-19
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多