WebAPI 프로젝트에서 다중 임대를 구현하려고합니다.OwinContext 환경에 추가 된 요소가 없습니다.
내 Startup.Auth.cs에서 선택한 Tenant 개체를 IOwinContext에 추가하고 있습니다.
app.Use(async (ctx, next) =>
{
Tenant tenant = GetTenantBasedUrl(ctx.Request.Uri.Host);
if (tenant == null)
{
throw new ApplicationException("tenant not found");
}
ctx.Environment.Add("MultiTenant", tenant);
await next();
}
여기서 GetTenantBaseUrl 함수는 선택된 Tenant 개체를 반환합니다. 저는 Tenant 객체를 얻기 위해 모든 컨트롤러에 구현할 ApiController를 구현하는 클래스를 만들었습니다. 내 컨트롤러에서
public class MultiTenantWebApiController : ApiController
{
public Tenant Tenant
{
get
{
object multiTenant;
IDictionary<string, object> dic = HttpContext.Current.GetOwinContext().Environment;
if (!HttpContext.Current.GetOwinContext().Environment.TryGetValue("MultiTenant", out multiTenant))
{
throw new ApplicationException("Could Not Find Tenant");
}
return (Tenant)multiTenant;
}
}
}
은 내가 OwinContext 환경에서 "멀티 테넌트"키를 얻고있다하지만 난 내 OwinContext 환경 예에서 "멀티 테넌트"키가 표시되지 않습니다 가져 ApplicationOAuthProvider 클래스에서 같은 시도 : 아래 getEnvironment 변수 :
를public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
{
private readonly string _publicClientId;
// some code here
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
try
{
**IDictionary getEnvironment = HttpContext.Current.GetOwinContext().Environment;**
// some code
왜 내 컨트롤러 안에있는 동안 ApplicationOutProvider의 OwinContext.Environment에 "MultiTenant"키가 나타나지 않는지 아는 사람이 있습니까?
감사합니다.
굉장한 Saravanan .. 같은 세부 문서를 제공해 주셔서 감사합니다. 고맙습니다! –
@TarunOhri : 유용하다고 생각되면 답변으로 표시하십시오. – Saravanan