Asp.net 在站点之间共享内容/DB

Asp.net 在站点之间共享内容/DB,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我有一个公共网站和一个基本的,安全的cms'y网站。它们将在同一主机上。我想使用相同的数据库(从cms写入,从公共站点读取),和可以访问相同的内容(文件系统),这样我就可以从cms站点将图像(而不是sql blob)上传到公共站点 最好的方法是什么?是通过my web.config中的权限设置实现的吗 我会把它作为一个带有区域或名称空间的单一站点来做,但我使用的WebAPI并不真正受支持(是的,你可以这样做,但陷阱很快就会显现出来)。这个问题有一个长答案和一个短答案 简短的回答: 数据库访问将

我有一个公共网站和一个基本的,安全的cms'y网站。它们将在同一主机上。我想使用相同的数据库(从cms写入,从公共站点读取),可以访问相同的内容(文件系统),这样我就可以从cms站点将图像(而不是sql blob)上传到公共站点

最好的方法是什么?是通过my web.config中的权限设置实现的吗


我会把它作为一个带有区域或名称空间的单一站点来做,但我使用的WebAPI并不真正受支持(是的,你可以这样做,但陷阱很快就会显现出来)。

这个问题有一个长答案和一个短答案

简短的回答:

  • 数据库访问将在相关网站的web.config中进行控制。多个站点可以轻松地与同一数据库通信,一个站点(web场)的多个实例也可以
  • 文件系统访问将在IIS级别进行控制。您可以通过向运行站点的用户授予目录、位置和文件的权限来分配对文件系统的访问权限
长答案

答案很长的原因是这里有多个选项,这完全取决于如何设置堆栈。那么您想设置两个站点,从两个不同的角度管理相同的数据?以下是我脑海中的几个选项:

一个

我想说最简单的方法是有一个包含两个web项目的解决方案。好处:

  • 作为一个解决方案的一部分,两个网站可以做不同的事情——既有逻辑意义,也有技术意义
  • 然后可以在IIS中将它们部署为单独的站点,这样就可以很容易地管理为单独的url或一个url的子域
  • 它们可以共享一个基本上处理应用程序的公共dll,也可以是两个不同的版本
两个

如果您使用的是Web API,为什么不在API中内置两个站点的功能,然后在API上设置访问级别以限制特定站点可以执行的活动(即管理内容与读取内容)。一些好处:

  • 两个站点使用相同的代码库可以更轻松地组织业务逻辑
  • 对某些功能的限制可以通过令牌、传入IP范围或一系列其他选项来实现
三个

您有什么理由必须分离功能吗?基于用户登录,您可以轻松地拥有一个动态菜单和安全性,只需更改允许用户访问的功能即可。(或者,正如您的帖子所建议的,一组“查看”功能用于未经身份验证的用户,另一组用于已验证的用户)

  • 轻松部署配置文件
  • 单一开发代码库
  • 常见-这是许多博客框架(如Orchard)的配置文件,如果用户未登录,则用户处于查看模式-即任何博客阅读器-但管理员/所有者可以登录以访问博客/cms功能
这与权限无关,您只需将另一个ConnectionString写入web.config即可