我已使用Ninject为我的WCF服务成功配置了DI.每个服务类都有一个构造函数,Ninject在运行时将实例注入其中.
public class MessageService : ServiceBase,IMessageService
{
private readonly IMessageRepository _messageRepository;
private readonly IMappingEngine _mapper; // AutoMapper mapping engine
// Instances injected in constructor by Ninject
public MessageService(IMessageRepository messageRepository, IMappingEngine mapper)
{
_messageRepository = messageRepository;
_mapper = mapper;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,这是通过告诉Wcf使用NinjectServiceHostFactory来激活服务来实现的.
一切都很好......这是一种享受.
我有许多类库,由wcf服务项目引用.其中一个库具有派生自ClaimsAuthenticationManager的类.它旨在将传入的声明转换为特定于域的声明.WCF脚手架在运行时将此类实例化为标识管道的一部分.我希望此类使用存储库模式从数据库中获取标识的业务角色.然后,它将创建具有特定于域的声明的新ClaimsIdentity.现在我可以新建一个存储库实例,但我希望Ninject在运行时注入它.我创建了一个带有存储库接口参数的构造函数,完全天真地希望Ninject能够做到这一点.WCF失败,因为它找不到无参数构造函数.
当我基本上没有引用类库中的Ninject内核时,如何让Ninject注入实例?
我的理解是IoC容器应该在组合根处创建,在我的情况下是在WCF服务主机中.因为它是实例化我的类的Wcf管道,所以我无法控制进程以连接依赖项.或者我呢?
在"旧"ASP.NET中,我可以构建自定义授权属性并覆盖HandleUnauthorizedRequest.我似乎无法使用自定义授权处理程序使用ASP.NET Core执行此操作.后者要么"成功"要么"失败",我想根据失败的性质重定向到其他控制器动作.
这是场景.我的网络应用程序的用户有一个声明,表明他们是"活跃"用户,即他们已经完全注册,我们已经验证了他们的详细信息等.新用户已经使用OpenIdConnect中间件进行了身份验证,但是,直到我们完全验证并设置他们的帐户,没有"主动"用户声明.因此,新用户和活动用户都已经过身份验证.我想阻止新用户访问大部分应用程序.每当他们尝试访问https://app.example.com/dashboard时,我想将它们重定向到https://app.example.com/newuser页面,他们可以从中进行设置过程.
我可以在我的控制器上使用授权策略来检查是否存在"活动"用户声明并允许访问.当新用户没有此声明并且授权失败时,我希望授权处理程序具有一些逻辑,然后将它们重定向到他们有权访问的应用程序区域.但我不知道如何使用ASPNET核心中的授权框架来做到这一点.
有一种笨重的解决方案使用CookieMiddleware并为OnRedirectToAccessDenied事件实现处理程序 - 请参阅https://github.com/aspnet/Mvc/issues/4890.我还想过实现一个在每个请求上运行的动作过滤器.
我只是在这里傻吗?当然,想要对授权失败执行某些操作是有意义的,这不仅会让用户重新进行身份验证.
我认为我在这里缺少一些东西,我提前为愚蠢道歉.试图拥抱dotnet核心的新世界,并将项目作为一种尝试学习的方式.
我已经编写了一些身份验证中间件来使用ASP.NET Core Identity.我使用.NET核类库作为中间件 - 优点是我相信我可以针对任何框架以及构建我的组件的Nuget包.当与基于VS2015 RC2模板的.NET Core的ASP.NET Core Web应用程序一起使用时,中间件可以正常工作.
我喜欢冒险,我决定创建一个基于OWIN/Katana认证中间件的组件版本,这样我就可以在ASP.NET 4.5/6 Web应用程序中使用它.我没有创建传统的类库项目,而是再次使用.NET Core Class Library模板,但仅针对.NET 4.6,即net46.它编译得很好,但我无法让我的ASP.NET 4.6应用程序引用它.我按照这个SO问题中的信息来创建一个NuGet包,创建一个本地源,然后尝试将它添加到我的ASP.NET 4.6项目,但它失败并出现错误:
无法解析依赖关系'NETStandard.Library'.使用的来源:'nuget.org','AspNetRc2Source','MyGet','本地','Microsoft和.NET','Microsoft Visual Studio离线包'.0
我的头脑旋转着依赖和框架.
无论如何,这里是我的.NET Core类库中的project.json文件 - 你可以看到它只针对.NET 4.6,这也是我的ASP.NET应用程序的目标.
我觉得我需要一些严肃的.NET 101课程来了解所有这些依赖关系如何组合在一起,但如果有人能够指出我正确的方向,我将不胜感激.
作为一个相当新的Javascript和ac#背景我一直在磕磕绊绊.我很快就知道,我需要了解函数本身就是对象这一事实,而且JS闭包通常是导致混淆的原因.
我试图理解这段代码
// Function which returns object with function properties
function myFunc() {
value = 42;
var result = {
value: value,
getValue: getValue,
incrementValue: incrementValue,
setValue: setValue,
};
return result;
function setValue(y) {
value = y;
};
function getValue() {
return value;
};
function incrementValue() {
value++;
};
};
// Helper function to print out results
function printResults(m,x){
$('#output').append(m + ': ' + x).append('<br/>');
};
var myObject = myFunc(); // returns the object
printResults('Inital call to getValue',myObject.getValue());
myObject.setValue(59);
printResults('Called …Run Code Online (Sandbox Code Playgroud) asp.net ×2
.net ×1
.net-core ×1
asp.net-core ×1
asp.net-mvc ×1
closures ×1
javascript ×1
ninject ×1
wcf ×1