WebAPIプロジェクトでマルチテナントを実装しようとしています。OwinContext環境に含まれていない要素が追加されました
私のStartup.Auth.csでは、選択したテナントオブジェクトを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オブジェクトを取得するために私のすべてのコントローラに実装する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環境IEの「マルチテナント」キーが表示されないApplicationOAuthProviderクラスから同じことをフェッチしよう:以下GetEnvironment関数変数:
私は私のコントローラ内部でそれを得るのに対し、私はApplicationOAuthProviderのOwinContext.Environmentで「マルチテナント」キーを取得していないです、なぜ誰もが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
を知っていますか?
ありがとうございます!
恐ろしいサラバナン..同じものの詳細ドキュメントを提供してくれてありがとう。感謝します ! –
@TarunOhri:それが役に立つと分かったら、答えとしてマークしてください – Saravanan