我正在使用Autofac进行Inversion of Control容器,其配置如下
public void Configuration(IAppBuilder app) {
configureIoC(app);
configureAuth(app);
}
void configureIoC(IAppBuilder app) {
var b = new ContainerBuilder();
//...
b.Register(c => HttpContext.Current?.User?.Identity
?? new NullIdentity()).InstancePerLifetimeScope();
var container = b.Build();
app.UseAutofacMiddleware(container);
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
Run Code Online (Sandbox Code Playgroud)
我相信这是Autofac与其他容器的事实可能与我所看到的无关.在这里,他们重点线是一个配置上的任何依赖IIdentity从采摘HttpContext.Current.
我这样使用它,这样我就可以随时随地访问当前用户.
public interface ICurrentUser {
Task<AppUser> Get();
}
public class CurrentUserProvider : ICurrentUser {
public async Task<AppUser> Get() => await users.FindByNameAsync(currentLogin.GetUserId());
public CurrentUserProvider(AppUserManager users, IIdentity currentLogin) {
this.users = users;
this.currentLogin = currentLogin;
}
}
Run Code Online (Sandbox Code Playgroud)
我在过去的项目中使用了这种模式,它运行良好.我正在将它应用于现有项目并看到一个非常奇怪的事情. …
我正在使用hash-tag链接实现仅限css的选项卡.我非常接近,但不能让柔性包装正常工作.为了让一切按照我想要的方式工作:target(我之前用单选按钮完成了这个并且提供了更多的灵活性),我需要所有选项卡和所有部分在同一级别,所以我有:
body
section
anchor
section
anchor
...
Run Code Online (Sandbox Code Playgroud)
然后我可以使用flexbox排序使所有锚点首先显示并适当地设置样式,将所有部分设置为宽度100%并使用flex-wrap它们来包装到下一行.问题是我似乎无法控制第一行的高度.这里发生了什么?
body {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: 0;
padding: 0;
height: 100vh;
outline: 1px solid green;
}
body > a {
padding: 10px;
margin: 0 5px;
order: -1;
flex-grow: 0;
border: solid gray;
border-width: 1px 1px 0 1px;
}
body > a:last-of-type {
order: -2;
}
section {
flex-grow: 1;
width: 100%;
background-color: cornsilk;
display: none;
border-top: 1px solid grey;
}
section:last-of-type {
display: flex;
} …Run Code Online (Sandbox Code Playgroud)所以在开始之前,我知道如何向网络开放 IISExpress,有很多关于此的文章,我什至写了一篇. 然而,这些方法确实有局限性 - 最明显的是需要添加绑定,我发现这些绑定是偶然的,更糟糕的是,会破坏任何基于主机名执行操作的代码。
我在 Parallels 中运行 Windows 10 的 OsX 上,本周早些时候,我想我应该尝试将 localhost 转发到虚拟机中,就像使用 docker 容器一样。
我已经很接近了,但我不知道最后一步。这是我所做的和我所看到的:
我看到的是,当我localhost:44300从虚拟机内部点击时,我的网站加载良好并且记录了各种内容。
但是当我从主机上点击它时,我得到了
HTTP 错误 403。请求 URL 被禁止。
在这种情况下,iisexpress 没有记录任何内容。
但是,我知道请求以某种方式通过,因为如果我停止 iisexpress 并localhost:44300再次在主机上访问,我会得到标准
本地主机拒绝连接。ERR_CONNECTION_REFUSED
因此,iisexpress 是否在该端口上侦听的事实正在级联到主机虚拟机,但没有其他内容通过。
所以我有点不知所措 - 它几乎看起来有点像一个绑定的东西,但据 iisexpress 所知,由于端口转发,这个请求不是来自吗localhost?它如何判断它是否不是?由于缺乏日志消息,这听起来不太可能。而且我从来没有在提琴手中看到任何弹出的东西。
我想知道是否可能还有其他一些Windows 组件看到绑定到 44300 的东西,看到来自网络堆栈的请求,然后将其关闭。这是一件事吗?
关于netsh http工作原理的文档非常稀少,几乎没有任何可用的在线内容。我们这里有delegate根据文档的参数
指定以下值之一: yes:允许用户委派 URL no:拒绝用户委派 URL。这是默认值。
这到底是什么意思?委托 URL 是什么意思?(或者就此而言,是否有任何地方可以更好地解释 urlacl 的概念?)
尽管每个 python grpc quickstart 引用都grpc_tools.protoc用于生成实现 proto 文件的 python 类,但我能找到的最接近文档的内容只是简单地说
给定 protobuf 包含目录 $INCLUDE、输出目录 $OUTPUT 和 proto 文件 $PROTO_FILES,调用如下:
$ python -m grpc.tools.protoc -I$INCLUDE --python_out=$OUTPUT --grpc_python_out=$OUTPUT $PROTO_FILES
Run Code Online (Sandbox Code Playgroud)
这不是很有帮助。我注意到有很多限制。例如,使用$OUTPUTof ..just 会以静默方式失败。
在哪里可以找到有关此工具的文档?
这对我来说似乎很奇怪。你可以看到我们有一个简单的 details 元素,它应该是水平运行的。但事实并非如此。grid似乎也行不通。
为什么?我没有看到规范中关于这些元素的布局模型有任何不同的任何内容。
details {
display: flex;
flex-direction: row;
}Run Code Online (Sandbox Code Playgroud)
<details open>
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
</details>Run Code Online (Sandbox Code Playgroud)
编辑:下面是最初与标题一起发布的前一个问题
xunit 在控制台中运行时显示 ITestOutputHelper 输出
经过调查(见评论),这个问题仍然非常相关,需要一个答案,但似乎它应该针对vstest框架和围绕输出接收器而不是 xunit。
现在的具体问题是:当某些内容写入dotnet vstest输出接收器时,如何dotnet test在从命令行运行时显示它。具体来说,我希望能够设置一个观察者dotnet watch来持续运行测试,我更关心输出而不是结果(我将它用作测试系统,而更多地用作开发笔记本)。而且我不想局限于 Visual Studio 或 vscode。
原问题:
在我的测试课上,我有
[Fact]
public void Test() {
output.WriteLine("WHATEVER");
}
readonly ITestOutputHelper output;
public GroceryTests(ITestOutputHelper output) => this.output = output;
Run Code Online (Sandbox Code Playgroud)
当我通过 vscode 编辑器集成运行它时,我可以在“输出”窗格中看到输出。当我通过它运行它时,dotnet test我没有。如何通过控制台显示此输出?
我发现自己偶尔编写代理用于非常简单的函数(不带参数并返回void例如)并且我想知道是否有人知道某个已经编译了.NET框架中已经可用的所有预定义委托的列表,所以我可以重用它们?
要清楚我正在寻找这样的东西:
等等
如果没有,听起来像博客文章的好主意.
好的,所以我遇到了以下问题引起了人们的注意.
由于各种原因,我有一个测试设置,其中TestingAssembly.dll中的测试类依赖于BaseTestingAssembly.dll中的TestingBase类.TestBase在此期间所做的一件事就是在自己和调用程序集中查找某个嵌入式资源
所以我的BaseTestingAssembly包含以下几行......
public class TestBase {
private static Assembly _assembly;
private static Assembly _calling_assembly;
static TestBase() {
_assembly = Assembly.GetExecutingAssembly();
_calling_assembly = Assembly.GetCallingAssembly();
}
}
Run Code Online (Sandbox Code Playgroud)
静态,因为我想,这些程序集在应用程序的生命周期内是相同的,所以为什么还要在每次测试时重新计算它们.
在运行时,我注意到_assembly和_calling_assembly分别设置为BaseTestingAssembly而不是BaseTestingAssembly和TestingAssembly.
将变量设置为非静态并将它们初始化为常规构造函数修复此问题,但我很困惑为什么会发生这种情况.我认为静态构造函数在第一次引用静态成员时运行.这可能只来自我的TestingAssembly,那时应该是调用者.有谁知道可能发生了什么?
关于单元测试最佳实践的这个问题提到了为依赖注入设计类.这让我想到了究竟是什么意思.
刚刚开始使用控制容器的反转,我对这个问题有一些想法,所以让我把它们扔到墙上看看有什么问题.
我看到它的方式,对象可以有三种基本类型的依赖项.
另外,我应该提一下,并不是所有东西都应该是DI,如果你有一个简单的功能,只是方便分解到一个扔掉的类,它可能可以在现场实例化.显然这是一个判断力; 如果我发现写一个类的权宜之计
class PasswordEqualsVerifier {
public bool Check(string input, string actual) { return input===actual;}
}
Run Code Online (Sandbox Code Playgroud)
我可能不会打扰依赖注入它,只是让一个对象直接在using块中实例化它.其必然结果是,如果值得编写单元测试,则可能值得注入.
那你觉得怎么样?欢迎任何其他指南或对比意见.
.net ×2
css ×2
html ×2
windows ×2
asp.net ×1
asp.net-mvc ×1
c# ×1
css3 ×1
flexbox ×1
grpc ×1
http ×1
iis-express ×1
networking ×1
parallels ×1
python ×1
reflection ×1
vstest ×1