如何在IIS 7中托管多个网站,并为所有网站使用相同的MVC应用程序,例如每个网站:
有它自己的根目录,所以用户可以上传自己的文件(html,css,javascript),而不会看到其他网站的内容
使用相同的MVC应用程序 - 因此对应用程序的更新会影响所有网站
用户不能以任何方式影响MVC应用程序(最好是隐藏它们)
谢谢!
答案 0 :(得分:1)
web.config
将在所有站点之间共享,您必须通过查看Host
HTTP标头或其他绑定信息在按需运行时加载每站点配置。 C:\Inetpub\sites\
下WebsiteA
,WebsiteB
等。每个文件夹重新设置NTFS权限ACL,只允许每个网站的应用程序池用户访问。在这些创建文件夹中称为“内容”,“视图”和“日志”Logs
目录。请注意,此计划基于MVC评估其VirtualPathProvider中的IIS虚拟目录的假设。如果没有,那么你将不得不推出自己的VirtualPathProvider,以便按主机名加载每个网站的内容。
答案 1 :(得分:0)
如果您运行的是一个代码库,请设置一个使用domain routing的网站或全局过滤器来捕获域,保存并将其用作文件夹的密钥等等。
public class DomainFilterAttribute : ActionFilterAttribute
{
private SiteDomainRepository _siteDomainRepository = new SiteDomainRepository();
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var viewBag = filterContext.Controller.ViewBag;
var host = HttpContext.Current.Request.IsLocal ? "www.testdomain.com" : HttpContext.Current.Request.Url.Host;
var domain = hostSplit[1];
var siteDomain = _siteDomainRepository.GetByRowKey(domain);
viewBag.DomainName = host.ToLower();
viewBag.Domain = siteDomain.RowKey;
viewBag.Class = siteDomain.Key;
viewBag.TrackingCode = siteDomain.TrackingCode;
}
}