我试图在XUnit项目中执行以下操作,以获取我的测试应该使用的数据库的连接字符串:
public class TestFixture : IDisposable
{
public IConfigurationRoot Configuration { get; set; }
public MyFixture()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public void Dispose()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为它在Startup.cs中使用时在WebAPI和MVC模板中完美运行.此外,此代码以前在RC1中使用dnx工作,但现在我将所有内容更新到RC2和Core CLI,它不再能够找到appsettings.jsonxunit类库的根目录中的文件.
这是我的测试类的样子,所以你可以看到我如何调用配置:
public class MyTests : IClassFixture<MyFixture>
{
private readonly MyFixture _fixture;
public MyTests(MyFixture fixture)
{
this._fixture = fixture;
}
[Fact]
public void TestCase1()
{
ICarRepository carRepository = new CarRepository(_fixture.Configuration);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个asp.net核心Web API.我目前正在使用Angular 4应用程序直接调用它.
我现在想要添加身份验证和授权层.
我想通过向我的解决方案添加另一个类型的项目(严格意义上为auth)来实现这一点:ASP.NET Core MVC(带有个人用户帐户),然后将IdentityServer4添加到它.计划是使用现有的Identity表来存储用户,角色等.
一旦完成这一切,我对Angular 4 SPA应用程序或任何其他第三方通过IdentityServer应用程序进行身份验证的方式感到有些困惑.我会假设这会返回某种类型的令牌.然后继续使用该令牌调用我原来的Web API项目(即GetCustomers()).
从我做的研究看来,我需要的唯一其他东西是ASP.NET Core中的JWT承载认证.
有人可以提供一些关于如何进行整个过程的链接/信息.没有找到任何通过整个事情的好视频.另外,请确认我所说的上述模式听起来是正确的.
asp.net-identity asp.net-core identityserver4 asp.net-core-webapi angular
我正在尝试使用 bootstrap 4 网格系统将单列居中。在引导程序 3 中,我能够做到:
<div class="col-md-10 col-md-offset-2">
</div>
Run Code Online (Sandbox Code Playgroud)
在引导程序 4 中,即使使用新的偏移类:offset-md-2,同样也不起作用。
以下工作,但在页面上有空列感觉不对,只是为了将 col-md-5 居中。
<div class="row">
<div class="col"></div>
<div class="col-md-5 align-self-center">
<img src="img/myimage.gif" style="width: 100%;">
</div>
<div class="col"></div>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用HttpClient POST到Web API.当我在Web API的Save方法中放置断点时,[FromBody] Product为null.这意味着我将产品发布到Web API的方式出了问题.有人可以看看下面的代码,看看我可能会出错的地方.我假设它与标题和内容类型有关.
POST从客户端存储库调用Web API,它应该通过JSON传递产品对象:
public async Task<Product> SaveProduct(Product product)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:99999/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
StringContent content = new StringContent(JsonConvert.SerializeObject(product));
// HTTP POST
HttpResponseMessage response = await client.PostAsync("api/products/save", content);
if (response.IsSuccessStatusCode)
{
string data = await response.Content.ReadAsStringAsync();
product = JsonConvert.DeserializeObject<Product>(data);
}
}
return product;
}
Run Code Online (Sandbox Code Playgroud)
Web API控制器方法:
[HttpPost]
[Route("save")]
public IActionResult Save([FromBody]Product product)
{
if (customer == null)
{
return HttpBadRequest();
}
_manager.SaveCustomer(product);
return CreatedAtRoute("Get", new { …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC6并在我的表单中有一个复选框输入字段,但是当提交表单时,复选框的值总是作为false传递给ViewModel:
以下是在我的ViewModel中声明属性的方式:
[Display(Name = "Include Sales Tax")]
public bool IncludeSalesTax { get; set; }
Run Code Online (Sandbox Code Playgroud)
以下是我的MVC6剃刀形式的表单:
<div class="form-group">
<div class="checkbox">
<label><input asp-for="IncludeSalesTax" type="checkbox" value="">@Html.DisplayNameFor(m => m.IncludeSalesTax)</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我认为以上将是遵循Twitter Bootstrap标准并使用ASP.NET MVC6 asp-for标签进行模型绑定的最佳方式.
当我提交表单时,IncludeSalesTax的值总是为false,即使在选中时也是如此.我究竟做错了什么?
我正在使用Angular w/Angular Material和Flex Layout
我正在尝试为Web应用程序创建一个与此站点完全相同的布局.注意固定标题,固定侧边栏,固定内容的痛苦.没有使用浏览器滚动,只有div滚动并完全适合浏览器视口.
这是我用来给我基本结构的html:
<md-toolbar color="primary">
<span>Application Title</span>
</md-toolbar>
<md-sidenav-container>
<md-sidenav mode="side" opened="true">Drawer content</md-sidenav>
<div class="my-content">Main content</div>
</md-sidenav-container>
Run Code Online (Sandbox Code Playgroud)
另外我设置了以下样式:
html, body {
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
md-sidenav-container, .main-content {
margin: 0;
width: 100%;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
我注意到没有页面上的工具栏,一切都很完美.所以我添加了一个填充底部:64px; 到md-sidenav-container,.main-content类.似乎它修复了内容,但不是sidenav.sidenav滚动条仍然在浏览器窗口下方.
如果有人能告诉我如何使用flex指令,我确实已经安装了flex-layout到我的Angular应用程序.否则,普通的CSS也没关系.
我将一个Web API项目从ASP.NET Core 1.x升级到ASP.NET Core 2.0,只需极少的代码更改.
运行WebAPI时,命令提示符会像平常一样打开.
但是,每条信息都是重复的.
这是一个ASP.NET Core错误还是升级后我的问题?
更新:
我在Startup.cs配置方法中执行以下操作:
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
Run Code Online (Sandbox Code Playgroud)
当我删除它没有重复.这不再需要了吗?
我通过Visual Studio 2017中的Publish屏幕使用Azure发布了一个asp.net核心Web应用程序.我使用了所有默认设置,但我的应用程序使用了迁移,所以我不得不告诉它在发布配置文件中运行它们.
当我尝试访问该网站时,我得到:
由于发生了内部服务器错误,因此无法显示该页面.
我觉得我需要对连接字符串和ASPNETCORE_ENVIRONMENT变量做些什么.
我仍然拥有创建新的asp.net核心Web应用程序时获得的默认appsettings.json和appsettings.Development.json.appsettings.json指向我的本地开发数据库,appsettings.Development.json指向发布配置文件中的azure数据库.
或者发布配置文件是否自动处理连接字符串,我不必执行上述任何操作?
c# azure azure-deployment azure-web-app-service asp.net-core
<React.StrictMode>默认情况下,最新的 create-react-app标签包裹在组件周围。我看到的每个将 react-redux 添加到应用程序的示例中都没有 React.StrictMode 标签。
这是我所做的:
<Provider store={store}>
<React.StrictMode>
<App />
</React.StrictMode>
</Provider>,
document.getElementById('root')
Run Code Online (Sandbox Code Playgroud)
但是,我总是看到:
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
Run Code Online (Sandbox Code Playgroud)
我阅读了StrictMode的用途。我认为它有助于调试和洞察应用程序中的问题,所以我想在开发时保留它。我所做的是否正确,或者 Provider 是否应该像所有示例中那样完全替换它?
我创建了一个空的核心1.0 Web应用程序,并添加了一个package.json文件,从此URL复制angular2快速启动package.json行.
我不断收到消息Dependencies - 未安装和npm - 未安装.
有谁知道为什么会这样?我是否必须在我的PC上实际安装node.js才能使Visual Studio能够使用它?鲍尔工作完美......
visual-studio node.js angularjs visual-studio-2015 asp.net-core-1.0
asp.net-core ×4
c# ×4
asp.net ×3
angular ×2
css ×2
angularjs ×1
asp.net-mvc ×1
azure ×1
bootstrap-4 ×1
flexbox ×1
httpclient ×1
javascript ×1
node.js ×1
razor ×1
react-redux ×1
reactjs ×1
xunit ×1
xunit.net ×1
xunit2 ×1