WCF:在IIS上托管的一个项目中有多个服务,但权限不同?

时间:2011-04-14 13:25:39

标签: wcf iis permissions

我有一个现有的应用程序,需要将部分内容暴露给外界,为不同的客户提供不同的服务 确切地说,它已经在运行一个WCF服务,现在我需要添加第二个服务,与第一个服务完全无关,由完全不同的客户端使用。

当我创建现有服务时,我在现有解决方案中添加了一个WCF服务项目,然后我创建了一个新的“WCF服务”并对其进行了编辑。
因此,在Visual Studio中,文件夹布局如下所示:

\MyServiceProject\IMyFirstService.cs
\MyServiceProject\MyFirstService.cs
\MyServiceProject\MyFirstService.csproj
\MyServiceProject\MyFirstService.svc
\MyServiceProject\Web.config

我们有一个编译东西并复制文件的构建脚本,然后IIS上的已发布文件夹看起来像这样:

\MyFirstService\bin\MyServiceProject.dll
\MyFirstService\MyFirstService.svc
\MyFirstService\Web.config

(如果我没记错的话,它只在DLL位于名为“bin”的子文件夹中才有效,因此在构建脚本中进行复制)

现在我要添加另一个.svc文件 我宁愿避免创建第二个WCF服务项目......我想将新服务添加到现有项目中。

但是:第二项服务需要拥有与第一项服务不同的权限(受限制的外部访问权限,但不同的客户端......)。 根据我们的管理员,我必须将第二个服务放在第二个文件夹中,以便我们可以赋予它不同的权限 因此部署的服务必须如下所示:

\MyFirstService\MyFirstService.svc
\MySecondService\MySecondService.svc

但这也意味着其他文件必须重复:

\MyFirstService\bin\MyServiceProject.dll
\MyFirstService\Web.config
\MySecondService\bin\MyServiceProject.dll
\MySecondService\Web.config

我不关心重复MyServiceProject.dll,但是Web.config呢? Visual Studio中只有一个,如果我想在调试模式下运行服务,我必须为它添加两个服务。
或者我可以以某种方式拆分web.config,以便它在Visual Studio中工作(当两个服务在同一文件夹中时)并部署在IIS上(每个服务都有自己的文件夹)?

知道如何解决这个问题吗? 或者我做错了什么?这个WCF对我来说都是新手,我到目前为止所做的一切都是在Google的帮助下被黑客攻击的......

1 个答案:

答案 0 :(得分:1)

你可以使用这篇文章 - ASP.NET Configuration File Hierarchy and Inheritance

在IIS中设置web.config层次结构。 将两个服务放在子目录中,放在将包含共享web.config的同一个根应用程序中。