我们的团队决定将Domain Driven Design架构用于我们的项目.现在正在进行讨论," 我们可以在DDD中使用ASP.NET身份吗?".
在DDD设计中使用ASP.NET标识是否有任何缺点.
我很困惑,要做出决定.
我已经搜索过了,但我没有想到.
任何帮助都会很明显.
我是OAuth 2.0的新手.
我已经相当阅读了OAuth 2.0文档,我看到有四种类型的方法可以获得授权.
获得授权的类型:
1.Implicit Grant
2.Resource Owner Password Credentials Grant
3.Client Credentials Grant
4.Authorization Code Grant
Run Code Online (Sandbox Code Playgroud)
就我而言,我有客户端应用程序,资源所有者,资源服务器和授权服务器.
资源服务器是资源所有者使用他/她的凭证注册的网站.
客户端应用程序是第三方网站,它注册到资源服务器并获取客户端应用程序凭据以便将来访问它.
授权服务器从客户端应用程序检查客户端凭据,并将访问令牌授予客户端应用程序.
让我们考虑,资源服务器为"www.serversite.com",授权服务器为"www.authserver.com",客户端应用为"www.clientapp.com".
流:
步骤1:还假设www.serversite.com作为支付网关站点,客户必须将"www.serversite.com"集成到"www.clientapp.com"中,以创建,执行和退款.
第2步:客户端"www.clientapp.com"在服务器"www.serversite.com"中创建一个应用程序并获取API凭据.
步骤3:使用这些API凭证,客户端"www.clientapp.com"向auth服务器"www.authserver.com"发出访问令牌请求.
步骤4:如果来自客户端应用程序的API凭据有效,则auth服务器授予访问令牌.
步骤5:使用此访问令牌,客户端应用程序请求资源服务器进行进一步操作,如创建付款以及执行付款.
我的问题:
我正在使用ASP.NET Web API进行授权服务器,并使用OWIN.OAuth生成访问令牌,刷新令牌,授权以及授权客户端应用程序所需的所有内容.
但是,在这个链接(OWIN OAuth 2.0授权服务器)中,我发现,web api使用"资源所有者密码凭据授权"授权客户端应用程序,并且为在web api中实现Owin.OAuth提供的示例很棒,但我有很多困惑在我心中漫游.
获得授权的哪种方式适合我的流程?(客户端凭据流或资源所有者密码凭据流)
如何使用ASP.NET Web API(OWIN OAuth)实现客户端凭据授予类型?
还提供一些可能对我有帮助的样本或链接?
提前致谢.
我在我的WCF服务中使用基本身份验证.并且还使用ASP Membership provider进行身份验证.
Web.Config: 对于REST服务:
<webHttpBinding>
<binding name="webHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="200065536" maxBufferPoolSize="200065536" maxReceivedMessageSize="200065536" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="202048000" maxStringContentLength="202048000" maxArrayLength="202048000"
maxBytesPerRead="202048000" maxNameTableCharCount="202048000"/>
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
Run Code Online (Sandbox Code Playgroud)
验证类型和模式:
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="CustomMemberShipProvider" />
</serviceCredentials>
Run Code Online (Sandbox Code Playgroud)
在调用任何方法之前,我的BasicAuthentication类.代码如下所示:
namespace BasicAuth.Service
{
public class BasicAuthenticationInvoker : Attribute, IOperationBehavior, IOperationInvoker
{
#region Private Fields
private IOperationInvoker _invoker;
#endregion Private Fields
#region IOperationBehavior Members
public void ApplyDispatchBehavior(OperationDescription operationDescription,
DispatchOperation dispatchOperation)
{
_invoker = dispatchOperation.Invoker;
dispatchOperation.Invoker = this;
}
public void ApplyClientBehavior(OperationDescription operationDescription, …Run Code Online (Sandbox Code Playgroud) 我创建了一个包含两个项目的项目.一个是控制台应用程序,而ohter是类库项目.
我将类库项目中的dll引用添加到控制台应用程序中.
现在,当我从类库项目返回一个对象时,可以在控制台应用程序中检索它,但是如果我尝试强制转换它,它就无法正常工作.
它抛出错误,因为无法将类型a转换为类型b.
我正在努力解决这个错误很多个小时.
我的类库项目代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
public object dyn()
{
var obj = new { ID = 2, Name = "Rajesh" };
return obj;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面我返回了一个列表作为对象.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq;
using System.Data.SqlClient;
using System.Collections;
using System.Data;
using ClassLibrary1;
using System.Reflection;
using System.ComponentModel;
namespace ConsoleApplication2
{
public class Program
{
public static …Run Code Online (Sandbox Code Playgroud) 我正在为我的项目使用Thread.Sleep(n).我听说Thread.Sleep会导致性能问题但不确定.
我的要求是:
等待5分钟增量,最多30分钟(5分钟延迟的6倍).在此之后,开始增加1小时并执行5次(另外5小时).
下面我提供了我在不同场景中使用Thread.Sleep(n)的示例代码:
Thread.Sleep(1000 * 60 * 5); //-------waiting for 5 minutes
var isDownloaded = false;
try
{
var attempt = 0;
while (attempt < 11)
{
isDownloaded = TryDownloading(strPathToDownload, strFileToDownload);
if (isDownloaded)
break;
attempt++;
if (attempt < 6)
Thread.Sleep(1000 * 60 * 5); //--------waiting for 5 minutes
else
{
if (attempt < 11)
Thread.Sleep(1000 * 60 * 60); //-------waiting for 1 hour
else
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码我试图下载最多11次下载尝试的文件.最初它等待5分钟,然后尝试下载第一次尝试的文件,如果失败则尝试接下来的5次尝试,每次尝试间隔5分钟.如果他们在前六次尝试中失败,则接下来的5次尝试,每次尝试间隔1小时.
所以我们决定在我们的控制台应用程序中使用Thread.Sleep来延迟时间.
这会导致任何问题或性能问题吗?
如果Thread.Sleep(n)导致性能问题,那么这将是一种更好的替代方式,而不是使用Thread.Sleep(n)?
最后,MSDN是否建议Thread.Sleep(n)有害或不应该使用?
我试图将C#代码转换为VB代码:
在C#代码中,它可以调用AddOrUpdate方法,但是当我在VB中编码时,它在intellisense中找不到.
c#代码:
protected override void Seed(eManager.Web.Infrastructure.DepartmentDB context){
context.Departments.AddOrUpdate( d => d.Name,
new Department() { Name = "Engineering"},
new Department() { Name = "Sales"}
);
}
Run Code Online (Sandbox Code Playgroud)
VB代码:
但是当我用VB编写方法AddOrUpdate()时,我找不到它.DepartmentDB类的声明是这样的:
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Data.Entity
Imports eManager.Domain
Public Class DepartmentDB
Inherits DbContext
Implements IDepartmentDataSource
Private _DBEmployees As DbSet(Of Employee)
Private _DBDepartments As DbSet(Of Department)
Public ReadOnly Property Departments As IQueryable(Of Department) Implements IDepartmentDataSource.Departments
Get
Return _DBDepartments
End Get
End Property
Public …Run Code Online (Sandbox Code Playgroud) 我刚刚遇到一种情况,即在订阅一小时后向新注册的用户发送验证邮件.
让我们考虑一个网站:www.sample.com和本网站,任何数量的用户都可以注册.注册完成后,我必须在注册时间一小时后向他们发送验证邮件.
我使用Sql Server 2008r2进行数据库存储.
如何在注册时间一小时后发送验证邮件?