Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3如何为站点的不同版本提供服务_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC3如何为站点的不同版本提供服务

Asp.net mvc 3 MVC3如何为站点的不同版本提供服务,asp.net-mvc-3,Asp.net Mvc 3,我需要能够为每个客户提供我的整个网站的不同版本。当然是beta版还是生产版,但最好能提供一个或两个以前的生产版。鼓励客户定制,我不希望强迫所有客户遵循(预期的)开发速度 数据库中存储了要提供服务的版本 从我所读到的到目前为止,定制视图引擎可能是实现这一点最直接的方法,但在开始这条路之前,我欢迎任何建议和评论 谢谢你的洞察力! 埃里克 编辑:不同的不仅仅是视图;控制器、母版页、图像、CSS…如果关于向哪个用户显示哪个版本的规则,我猜他们需要首先进行身份验证。如果是这种情况,您将有机会在用户上设置c

我需要能够为每个客户提供我的整个网站的不同版本。当然是beta版还是生产版,但最好能提供一个或两个以前的生产版。鼓励客户定制,我不希望强迫所有客户遵循(预期的)开发速度

数据库中存储了要提供服务的版本

从我所读到的到目前为止,定制视图引擎可能是实现这一点最直接的方法,但在开始这条路之前,我欢迎任何建议和评论

谢谢你的洞察力! 埃里克


编辑:不同的不仅仅是视图;控制器、母版页、图像、CSS…

如果关于向哪个用户显示哪个版本的规则,我猜他们需要首先进行身份验证。如果是这种情况,您将有机会在用户上设置cookie

我可能会在身份验证上设置一个cookie,确定向用户显示哪个版本,然后使用像IIRF这样的URL重写器将cookie设置为站点的beta版本来引导请求


如果用户对beta版有问题,他们可以选择返回生产站点,这是一个额外的好处。

我选择了查看引擎路线

基本上,这是非常直接的,我们有相同的控制器模型,等等。所有的代码都是共享的。然而,视图的呈现是基于“品牌”的。因此,视图引擎足够聪明,可以说如果我是品牌A,那么视图将位于{standard view location}/brand/viewname中


虽然它是分层的,但是如果视图位于品牌文件夹中,它会使用该文件夹,否则会返回到默认位置。它基本上是MVC用于查找视图源位置的标准模型的扩展。

我选择了自定义视图引擎路线:为什么不部署两个不同的站点?@tomasjanson,因为我希望它对客户的客户不可见。否则,我认为多个站点可能更简单。@Liam如果您不介意共享,您在服务器上的文件夹结构是什么。另外,您是如何将其映射到您的开发机器上的项目和源代码管理的?@Liam,如果您最后阅读了问题中的编辑,您会发现所有内容都不同,而不仅仅是视图。我想我应该将哪个版本存储在数据库中。使用cookie有什么好处吗?好处是你可以同时部署两个版本的站点,所有用户都可以在一个站点上进行身份验证,DB仍然说,一旦登录,URL重写器就可以读取cookie,从而为用户提供正确的页面,而过程对他们来说是不可见的。即使用户禁用了cookie,是否有办法使此工作正常?例如,URL重写器能否看到用户的身份并查找提供服务的版本?@Eric Nelson go to solution is cookies被禁用是将数据放入URL,但最终得到的是一个复杂的解决方案,即只有两个具有不同URL的站点。其他一切都很笨拙,比如基于IP、推荐人、用户代理的重定向。