我正在编写基于多租户的应用程序,我想从url(租户)的存储库加载自定义视图。
我在浏览器中输入https://corporate.myapp.local/,但在FileExists
方法HttpContext.Current.Request.Url
中给我http://127.0.0.1/它不会告诉我这是哪个域,所以我可以获取域名和文件解决tenantid
public class ViewPathProvider : VirtualPathProvider, ICustomVirtualPathProvider
{
VirtualPathProvider ICustomVirtualPathProvider.Instance => this;
private readonly ILogger _logger;
private readonly IThemeService _themeService;
private readonly ISellutionSession _sellutionSession;
public ViewPathProvider(ILogger logger, IThemeService themeService, ISellutionSession sellutionSession)
{
_logger = logger;
_themeService = themeService;
_sellutionSession = sellutionSession;
}
public override bool FileExists(string virtualPath)
{
_logger.Log($"CurrentCompanyId: {_sellutionSession.GetCurrentCompany(HttpContext.Current.Request.Url).CompanyId}");
var isViewExist = Pages.IsExistByVirtualPath(virtualPath);
return isViewExist || Previous.FileExists(virtualPath);
}
答案 0 :(得分:0)
您需要设置您的开发环境才能接受子域, 这可以通过编辑机器上的applicationHost.config文件和主机文件来完成。
需要更改IIS Express运行开发环境的方式。
在Visual Studio 2015中,右键单击解决方案文件。
在文件资源管理器中选择'打开文件夹'
转到包含文件夹并查找.vs文件夹。
在里面,会有一个包含applicationhost.config文件的配置文件夹。
在您喜欢的文本编辑器中打开它(我使用Notepad ++)
在Configuration / system.applicationHost / Sites下,您应该看到您的站点与端口和localhost绑定。
<binding protocol="http" bindingInformation="*:38254:localhost" />
复制此行并将您的子域添加到此绑定。
<binding protocol="http" bindingInformation="*:38254:m.localhost" />
保存此文件并重新加载项目。
主机文件 需要前往我们的Hosts文件来修改它。
在文件资源管理器中转到C:\ Windows \ System32 \ Drivers \ Etc。 打开HOSTS文件(没有扩展名) 在hosts文件的底部,添加以下两行。
127.0.0.1 localhost
127.0.0.2 m.localhost
保存文件。
您需要授予Visual Studio 2015管理权限才能使用子域。
现在我们可以运行我们的Visual Studio,看看我们的子域名实际上是run.st:3892
这是一个link来帮助你。