小编Geo*_*uer的帖子

为什么在解析WebApi时没有加载标识,而是在解析Mvc控制器时

我正在使用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)

我在过去的项目中使用了这种模式,它运行良好.我正在将它应用于现有项目并看到一个非常奇怪的事情. …

asp.net asp.net-mvc asp.net-web-api asp.net-identity

7
推荐指数
1
解决办法
235
查看次数

使用不同高度的行进行柔性包装

我正在使用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)

html css css3 flexbox

7
推荐指数
1
解决办法
1万
查看次数

为什么在访问虚拟机上托管的 localhost iisexpress 站点时会收到 403

所以在开始之前,我知道如何向网络开放 IISExpress,有很多关于此的文章,我什至写了一篇. 然而,这些方法确实有局限性 - 最明显的是需要添加绑定,我发现这些绑定是偶然的,更糟糕​​的是,会破坏任何基于主机名执行操作的代码。

我在 Parallels 中运行 Windows 10 的 OsX 上,本周早些时候,我想我应该尝试将 localhost 转发到虚拟机中,就像使用 docker 容器一样。

我已经很接近了,但我不知道最后一步。这是我所做的和我所看到的:

  1. 我暂时禁用了 Windows 上的防火墙
  2. 我将正确的端口(在本例中为 44300)转发到来宾虚拟机并重新启动它。
  3. 我通过命令行运行 iisexpress,以便可以看到完整的日志(我也通过 Visual Studio 尝试过)

我看到的是,当我localhost:44300从虚拟机内部点击时,我的网站加载良好并且记录了各种内容。

但是当我从主机上点击它时,我得到了

HTTP 错误 403。请求 URL 被禁止。

在这种情况下,iisexpress 没有记录任何内容。

但是,我知道请求以某种方式通过,因为如果我停止 iisexpress 并localhost:44300再次在主机上访问,我会得到标准

本地主机拒绝连接。ERR_CONNECTION_REFUSED

因此,iisexpress 是否在该端口上侦听的事实正在级联到主机虚拟机,但没有其他内容通过。

所以我有点不知所措 - 它几乎看起来有点像一个绑定的东西,但据 iisexpress 所知,由于端口转发,这个请求不是来自localhost?它如何判断它是否不是?由于缺乏日志消息,这听起来不太可能。而且我从来没有在提琴手中看到任何弹出的东西。

我想知道是否可能还有其他一些Windows 组件看到绑定到 44300 的东西,看到来自网络堆栈的请求,然后将其关闭。这是一件事吗?

windows parallels iis-express

7
推荐指数
0
解决办法
510
查看次数

netsh http add urlacl 的委托参数是什么

关于netsh http工作原理的文档非常稀少,几乎没有任何可用的在线内容。我们这里有delegate根据文档的参数

指定以下值之一: yes:允许用户委派 URL no:拒绝用户委派 URL。这是默认值。

这到底是什么意思?委托 URL 是什么意思?(或者就此而言,是否有任何地方可以更好地解释 urlacl 的概念?)

windows networking http

7
推荐指数
0
解决办法
284
查看次数

传递给 grpc_tools.protoc 的命令行参数是什么

尽管每个 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 会以静默方式失败。

在哪里可以找到有关此工具的文档?

python grpc

7
推荐指数
1
解决办法
4250
查看次数

细节元素似乎忽略了显示 flex 或网格?

这对我来说似乎很奇怪。你可以看到我们有一个简单的 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)

html css specifications

7
推荐指数
1
解决办法
864
查看次数

运行“dotnet test”时显示“dotnet vstest”输出接收器的输出

编辑:下面是最初与标题一起发布的前一个问题

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我没有。如何通过控制台显示此输出?

.net vstest

7
推荐指数
2
解决办法
4271
查看次数

有人知道已经内置到框架中的代表列表吗?

我发现自己偶尔编写代理用于非常简单的函数(不带参数并返回void例如)并且我想知道是否有人知道某个已经编译了.NET框架中已经可用的所有预定义委托的列表,所以我可以重用它们?

要清楚我正在寻找这样的东西:

  • void System.AsyncCallback(System.IAsyncResult)
  • int System.Comparison(T x,T y)
  • void System.IO.ErrorEventHandler(object,System.Io.ErrorEventArgs)

等等

如果没有,听起来像博客文章的好主意.

.net

6
推荐指数
1
解决办法
2736
查看次数

Assembly.GetCallingAssembly()和静态构造函数?

好的,所以我遇到了以下问题引起了人们的注意.

由于各种原因,我有一个测试设置,其中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,那时应该是调用者.有谁知道可能发生了什么?

c# reflection static-constructor

6
推荐指数
1
解决办法
3507
查看次数

设计依赖注入类的指南

关于单元测试最佳实践的这个问题提到了为依赖注入设计类.这让我想到了究竟是什么意思.

刚刚开始使用控制容器的反转,我对这个问题有一些想法,所以让我把它们扔到墙上看看有什么问题.

我看到它的方式,对象可以有三种基本类型的依赖项.

  1. 对象依赖关系 - 将由相关类使用的实际对象.例如LogInFormController中的LogInVerifier.这些应该通过构造函数注入.如果类足够高,在构造函数中需要超过4个这些对象,请考虑将其分解或至少使用工厂模式.您还应该考虑使用接口提供依赖关系并对接口进行编码.
  2. 简单设置 - 例如阈值或超时时间.这些通常应具有默认值,并通过工厂模式的构建器进行设置.您还可以提供设置它们的构造函数重载.但是在大多数情况下,您可能不应该强制客户端必须明确地进行设置.
  3. 消息对象 - 从一个类传递到另一个类的对象,接收类可能用于业务逻辑.一个示例是LogInCompleRouter类的User对象.在这里我发现通常更好的是不在构造函数中指定消息,因为您必须使用IoC容器注册User实例(使其成为全局)或者在您拥有User实例之后不实例化LogInCompleteRouter (你不能使用DI或至少需要对Container的显式依赖).在这种情况下,最好只在需要方法调用时传入消息对象(即LoginInCompleteRouter.Route(User u);).

另外,我应该提一下,并不是所有东西都应该是DI,如果你有一个简单的功能,只是方便分解到一个扔掉的类,它可能可以在现场实例化.显然这是一个判断力; 如果我发现写一个类的权宜之计

class PasswordEqualsVerifier {
  public bool Check(string input, string actual) { return input===actual;}
}
Run Code Online (Sandbox Code Playgroud)

我可能不会打扰依赖注入它,只是让一个对象直接在using块中实例化它.其必然结果是,如果值得编写单元测试,则可能值得注入.

那你觉得怎么样?欢迎任何其他指南或对比意见.

inversion-of-control

6
推荐指数
1
解决办法
689
查看次数