我正在构建单页面应用程序,我想知道用户的身份.我们的内联网中有Active Directory,但我对此并不了解.我可以使用这样的代码来验证用户名和密码.
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
{
bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}
Run Code Online (Sandbox Code Playgroud)
事实上,这就是我从Active Directory方面需要的一切.所以我可以使用此代码创建一些AuthorizationFilter,但这意味着用户名和密码必须在每个请求中.我只想发送一次用户名和密码,然后使用一些令牌进行授权.所以在我的服务器端应用程序中应该有一些令牌提供程序.
我从头开始构建这个应用程序,所以我可以使用最新的.net技术.我发现有一些Owin中间件正在处理令牌,cookie和OAuth.这有什么可以帮助我吗?
c# active-directory asp.net-web-api single-page-application owin
我试图弄清楚如何用ninject绑定这样的东西的正确方法.
interface IMainService
{
void DoStuff();
}
interface IOtherService
{
void DoSomeMagic();
}
abstract class BaseClass
{
//many stuff here
}
class MainClass : BaseClass, IMainService
{
public MainClass(IOtherService s)
{
}
public void DoStuff()
{
throw new NotImplementedException();
}
//do many other things
}
class OtherClass : IOtherService
{
public OtherClass(IMainService s)
{
}
public void DoSomeMagic()
{
throw new NotImplementedException();
}
}
class BaseModule : NinjectModule
{
public override void Load()
{
Bind<MainClass>().To<MainClass>();
Bind<IMainService>().To<MainClass>();
Bind<IOtherService>().To<OtherClass>();
}
}
static …Run Code Online (Sandbox Code Playgroud) 我有用TypeScript编写的node.js应用程序,我需要根据配置文件在两个接口实现之间切换.目前我有这个代码似乎工作.
"use strict";
import { config } from "../config";
let Something;
if (config.useFakeSomething) {
Something = require("./FakeSomething").FakeSomething;
} else {
Something = require("./RealSomething").RealSomething;
}
...
let s = new Something();
s.DoStuff();
...
Run Code Online (Sandbox Code Playgroud)
但我对此有不好的感觉(主要是因为加载模块的混合需求和导入).还有其他方法如何在不导入两个模块的情况下实现基于配置文件的实现切换?
我需要通过接口动态创建假对象.这个假对象的每个方法和属性都应该抛出NotImplementedException.有没有简单的方法如何使用.NET反射API?
以某种方式可以通过EnvDTE类以编程方式更改调试部分中的项目属性吗?我知道如何获取DTE实例并使用某些设置,但我是盲目的或调试部分无法访问.我从这里开始http://msdn.microsoft.com/en-us/library/envdte.project.dte.aspx

我有OWIN服务器作为控制台应用程序的一部分.你可以在这里看到主要方法:
class Program
{
public static ManualResetEventSlim StopSwitch = new ManualResetEventSlim();
static void Main(string[] args)
{
Console.CancelKeyPress += (s, a) =>
{
a.Cancel = true;
StopSwitch.Set();
};
using (WebApp.Start<Startup>("http://+:8080/"))
{
Console.WriteLine("Server is running...");
Console.WriteLine("Press CTRL+C to stop it.");
StopSwitch.Wait();
Console.WriteLine("Server is stopping...");
}
Console.ReadKey();
Console.WriteLine("Server stopped. Press any key to close app...");
}
}
Run Code Online (Sandbox Code Playgroud)
当请求的处理稍微长一点并且同时用户按下CTRL + C以停止应用程序时,立即停止请求处理并且不发送响应.是否有可能改变这种行为?我想拒绝所有新请求,但要等到当前正在处理的请求完成并在此之后停止服务器.
我最初的想法是创建OWIN中间件,它将跟踪当前正在处理的请求并推迟停止操作直到一切都完成.中间件还会在停止阶段将所有请求短路.但这个解决方案对我来说听起来不太好.
我想在SQLCE4数据库中使用Entity Framework Code第一种方法.一切似乎都很好,但我有调试SQL查询的问题.我发现来自http://efwrappers.codeplex.com/的 EFTracing 应该是我需要的,但我不知道如何在没有app.config文件的情况下使用它.我不是这种配置的忠实粉丝.我想只使用C#代码来设置和运行所有内容.我认为使用这样的代码应该没问题:
using (System.Data.Common.DbConnection c =
new EFTracingProvider.EFTracingConnection(
new System.Data.SqlServerCe.SqlCeConnection(conn)))
{
using (var context = new MyContext(c))
{
var a = from data in context.Projects select data;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.它抛出异常:
无法确定连接类型EFTracingProvider.EFTracingConnection的提供程序名称.
有没有简单的方法如何只在代码中正确创建包装连接?
我尝试用Ninject创建应用程序.我有一个MainForm用于设置的对话框表单.我应该如何实现这个?应该MainForm有一个Kernel实例,然后SettingsForm用Get<SettingsForm>()方法创建?或者MainForm构造函数应该具有SettingsForm实例参数?
我尝试用ninject找到一些WinForm应用程序的例子,但我发现只有一些ASP.NET应用程序在Visual C#2008 express中没用.
c# ×7
.net ×2
ninject ×2
owin ×2
envdte ×1
katana ×1
node.js ×1
reflection ×1
self-hosting ×1
typescript ×1
winforms ×1