asp.net-mvc – ASP.NET Core TestServer为Razor视图生成HTTP 50
当我使用TestServer调用MVC端点来检查视图呈现时,它会导致HTTP 500内部服务器错误响应.
错误是:
测试代码: using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; namespace MvcProject.Tests { [TestClass] public class ControllerTests { protected TestServer Server { get; } protected HttpClient Client { get; } public ControllerTests() { Server = new TestServer(new WebHostBuilder() .UseContentRoot("../../../../MvcProject") .UseStartup<Startup>()); Client = Server.CreateClient(); } [TestMethod] public async Task Action_Valid_Renders() { HttpResponseMessage response = await Client.GetAsync("http://localhost/"); Assert.AreEqual(HttpStatusCode.OK,response.StatusCode); } } } 我正在使用面向.NET Framework 4.6.1的ASP.NET Core 1.1,我的MSTest .csproj文件如下所示: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net461</TargetFramework> <IsPackable>false</IsPackable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="1.1.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" /> <PackageReference Include="MSTest.TestAdapter" Version="1.1.18" /> <PackageReference Include="MSTest.TestFramework" Version="1.1.18" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..MvcProjectMvcProject.csproj" /> </ItemGroup> </Project> 解决方法
正如
https://github.com/aspnet/Razor/issues/1212中所解释的,问题是Razor视图编译所需的.deps.json文件不会自动复制到测试项目的输出中.
您可以将以下手动构建步骤添加到测试项目以解决该问题. <!-- Work around https://github.com/NuGet/Home/issues/4412. MVC uses DependencyContext.Load() which looks next to a .dll for a .deps.json. Information isn't available elsewhere. Need the .deps.json file for all web site applications. --> <Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''"> <ItemGroup> <DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)','.deps.json'))" /> </ItemGroup> <Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" /> </Target> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 为什么压缩ScriptResource.axd,即使禁用了IIS压
- asp.net – 使用@@ identity检索PK
- ASP.NET MVC真正注销表单身份验证
- asp.net-mvc – 如何在MVC Unobtrusive Validation中验证Da
- asp.net – 如何在Identity 3.0中获取当前的UserId? User.
- asp.net – DNN外观可以使用空白元素而不是div来内容窗格吗
- asp.net – 什么Jenkins插件可以用于.NET网站部署?
- asp.net-mvc – 如何动态地将值从提交按钮传递给mvc?
- asp.net – 如何在使用服务器端分隔符时转义字符
- asp.net打印错误日志
- 统一流控服务开源:基于.Net Core的流控服务
- asp.net-mvc – 将焦点放在不使用JavaScript的Ed
- 剃刀 – 在身份3中创建声明身份
- asp.net – 如何从SQL Server 2008本身获取客户端
- asp.net-mvc – 如果是流媒体,则无法发布网站
- asp.net – 如何在迭代字典项时更新值?
- ASP.NET MVC 3:主模板的ViewModel?
- asp.net-mvc – 在asp.net mvc actionlink中传递
- asp.net-web-api – .NET WebApi查看原始请求
- ASP.NET Web应用程序(MVC)部署自动化和Subversio