我正在建立一个网站,我有一个主站点。这与SQL相关联。该站点必须具有许多子域。每个子域必须具有自己的DocumentDB连接字符串以及主连接字符串。这可能.Net Core?如果是这样,我怎样才能实现这一目标?
我已经在寻找解决方案,但却找不到充分利用的东西。
这就是我看到大局的方式。请给我一些如何实现这一目标的建议。谢谢!
更新 问题是,我想在主DB中存储DocumentDB的连接字符串。因此,当访问子域时,它必须从SQL获取DOcumentDB连接字符串,而不是从那里获取数据。
更新2 我不知道如何能让自己清醒过来。很难解释因为有许多方面我不了解自己。对不起。
我做了一个中间件知道我在哪里尝试获取子域名,所以我可以将其返回并使用它。 这是我到目前为止所得到的。 我的中间件:
public class ObtainSubdomainMiddleware
{
private readonly RequestDelegate _next;
public ObtainSubdomainMiddleware(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext context)
{
var subDomain = string.Empty;
var host = context.Request.Host.Host;
if (!string.IsNullOrWhiteSpace(host))
{
subDomain = host.Split('.')[0]; // How should I give back the subDomain?
}
// Call the next delegate/middleware in the pipeline
return this._next(context);
}
}
启动班:
//Here I think I have to do something with this middleware to use the right connectionstring
app.UseMiddleware<ObtainSubdomainMiddleware>();
答案 0 :(得分:0)
我想将DocumentDB的连接字符串存储在主DB中。因此,当访问子域时,它必须从SQL获取DOcumentDB连接字符串,而不是从那里获取数据。
首先,您可以尝试直接在MVC控制器中访问HttpContext.Request.Host
并查询SQL数据库以获取基于子域名的连接字符串。
其次,如果可能,您可以将您的应用程序发布为具有自己的子域的三个单独的网站,并在Web.config文件中存储和管理DocumentDB连接字符串。用户可以浏览站点并从不同的子域访问不同的DocumentDB。