我正在尝试使用我的控制器进行测试,xUnit但在执行Customer Controller的过程中收到以下错误:
“以下构造函数参数没有匹配的夹具数据:CustomerController customerController”
测试班
public class UnitTest1
{
CustomerController _customerController;
public UnitTest1(CustomerController customerController)
{
_customerController = customerController;
}
[Fact]
public void PostTestSuccessful()
{
Guid guid = Guid.NewGuid();
CustomerViewModel model = new CustomerViewModel()
{
Id = guid,
Name = "testName",
Email = "test email",
PhoneNumber = "test phone",
Address = "test address",
City = "test city",
Gender = "Male"
};
var actionResult = _customerController.Post(model);
Assert.NotNull(actionResult);
Assert.IsType<Task<IActionResult>>(actionResult);
Assert.True(actionResult.IsCompletedSuccessfully);
}
Run Code Online (Sandbox Code Playgroud)
CustomerController类
[Route("customers")]
public class CustomerController : ControllerBase
{
private readonly …Run Code Online (Sandbox Code Playgroud) 在 .NETCore 中,在Program.cs文件中运行应用程序时CreateWebHostBuilder(args).Build().Run();
我收到异常
“System.MethodAccessException:'尝试通过方法'Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)'访问方法'Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias(System.Type)'失败。'”
在方法
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题。我尝试通过卸载和安装 Microsoft.AspNetCore 但没有用,请查看我的依赖项的屏幕截图
除了 Microsoft.Extension.Logging 之外,所有版本的依赖项都相同。版本差异有什么问题吗。有人可以帮我解决这个问题吗?
我有一DbContext堂课,我在我的应用程序中使用代码优先方法。我有几个包含"Id"和"Value"列的常见标准表,我想通过表名和列名来查询它们,但实体框架中没有选项可以传递。
例子:
常用表:
Client_ClientDepartment (Id, Value)
Client_ClientDesignation (Id, Value)
Client_ClientCompany (Id, Value)
Run Code Online (Sandbox Code Playgroud)
我想要做的是传递表名并Id获取值。我创建了一个通用方法
public string GetClientValue(string id, string tableName)
{
DatabaseContext dbContext = new DatabaseContext();
//Query the database and get value based on table and id.
string value = dbContent. ("query here")
return value ;
}
Run Code Online (Sandbox Code Playgroud)
我可以在实体框架中实现吗?是否可以?
我正在使用以下代码将 Razor 类库动态加载到我的ASP.NET Core 3.0应用程序中:
var pluginAssembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(file.FullName);
var partFactory = ApplicationPartFactory.GetApplicationPartFactory(pluginAssembly);
foreach (var part in partFactory.GetApplicationParts(pluginAssembly))
MvcBuilder.PartManager.ApplicationParts.Add(part);
var relatedAssemblies = RelatedAssemblyAttribute.GetRelatedAssemblies(pluginAssembly, throwOnError: true);
foreach (var assembly in relatedAssemblies)
{
partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly);
foreach (var part in partFactory.GetApplicationParts(assembly))
MvcBuilder.PartManager.ApplicationParts.Add(part);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,控制器和视图最初正在工作。但是,如果我还将Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包和以下内容添加到Startup.cs:
services.Configure<MvcRazorRuntimeCompilationOptions>(options =>
{
options.FileProviders.Add(new PhysicalFileProvider(Path.Combine(WebHostEnvironment.ContentRootPath, "..\\AppPlugin")));
});
Run Code Online (Sandbox Code Playgroud)
我一编辑*.cshtml-file就会收到以下异常:
InvalidOperationException:找不到包“AppPlugin”的编译库位置
- Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver 解析器,列表程序集)
Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()
Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPartExtensions+<>c.b__0_0(CompilationLibrary 库)
- System.Linq.Enumerable+SelectManySingleSelectorIterator.MoveNext()
- System.Collections.Generic.List.InsertRange(整数索引,IEnumerable集合)
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RazorReferenceManager.GetReferencePaths()
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.RazorReferenceManager.GetCompilationReferences()
我还需要加载其他东西才能使其正常工作吗?
如果我从FileProviders运行时编译中省略插件路径,则适用于“非插件视图”。
WriteAllTextAsync如果字符串大小超过 4kb,则AppendAllTextAsync方法无法写入字符串内容。我假设这是某种缓冲区限制,但这些方法不支持接受缓冲区大小作为参数的重载方法。我正在使用.net框架4.7.2
当使用类WriteAllText的 或AppendAllText方法时File,输出文件的长度为 254 kb,并写入整个文本,但使用Async这些方法的版本时,仅写入 4kb 的输出。
//Populate jsonString variable with a very large string
string jsonString = "placeholder for string content";
//Below code will output partial string till 4kb in length
File.AppendAllTextAsync("temp.json", jsonString);
//Below code outputs the entire content
File.AppendAllText("temp.json", jsonString);
Run Code Online (Sandbox Code Playgroud)
有人可以解释这种行为以及问题的解决方案吗
我正在开发MongoDb用作数据库和.Net Core 3.0框架的应用程序。为了从数据库中提取数据,我创建了一个DbContext类和使用Aggregation()的功能MongoDb。我无法通过适当的投影。以下是代码DbContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
namespace Test.DbContext
{
/// <summary>
/// Standard CRUD Operations with MongoDb
/// </summary>
public class MongoDbContext
{
#region Properties
private readonly IMongoClient _mongoDbClient = null;
private readonly IMongoDatabase _mongoDb = null;
#endregion
#region Constructor
public MongoDbContext(IOptions<MongoSetting> mongoConfigs)
{
_mongoDbClient = new MongoClient(mongoConfigs.Value.ConnectionString);
_mongoDb = _mongoDbClient.GetDatabase(mongoConfigs.Value.DatabaseName);
}
#endregion
#region Grouping
public IList<TProjection> GroupBy<TDocument, TGroupKey, TProjection> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码使用Html Helper(Html.DropdownList)在MVC中创建下拉列表,但该列表未在UI上呈现.我试图将DropDownList绑定到一个IEnumerable的SelectListItems集合,但没有得到确切的结果.有人可以指出缺失的链接.这是https://dotnetfiddle.net/26h7xa代码的提琴手,下面是代码:
项目模型:
using System;
using System.ComponentModel.DataAnnotations;
namespace HelloWorldMvcApp
{
public class Employee
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Salary { get; set; }
public string Designation { get; set; }
public DateTime DateOfJoining { get; set; }
public bool Status { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
using System;
using System.Web.Mvc;
using System.Collections.Generic;
namespace HelloWorldMvcApp
{
public class HomeController …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×2
asp.net-core ×2
asp.net-mvc ×2
.net-core ×1
exception ×1
html ×1
linq ×1
mongodb ×1
plugins ×1
razor ×1
sql ×1
sql-server ×1
unit-testing ×1
xunit ×1