在 IIS 中托管 - 用于测试
要在 IIS 中托管服务,您需要创建一个虚拟目录。有两种方法可以做到这一点:
为了方便测试:
- 在 Visual Studio 中右键单击您的 WCF 服务项目,选择 Properties / Web
- 在那里选择“使用本地 IIS Web 服务器”。
- 不要启用“使用 IIS Express”。
- 项目 URL 是您的服务器应该在网络上可见的地址,即。
http://yourhost/somepath/
- 单击“创建虚拟目录”(您可能需要以管理员身份运行 Visual Studio,但这一步只需要一次,日常使用不需要管理员权限)。
之后,您的虚拟目录设置完毕,IIS 会将所有请求定向http://yourhost/somepath
到您的 WCF 服务。请注意,这将指向项目目录中 Visual Studio 生成的二进制文件,因此重建将自动进行。
这是最简单的开发和测试选项,您甚至不需要打开 Visual Studio,但您所做的任何更改都会自动反映到已部署的实例中。
在 IIS 中托管 - 用于生产
对于生产,您需要创建一个真实的虚拟目录。要做到这一点:
- 创建一个应该托管您的服务的目录,例如 `C:\inetpub\yoursite\yourservice\',这可以是文件系统上的任何目录。
- 将您的 Web 服务复制到此目录中(Visual Studio 有某种方法可以自动执行此操作,尽管我从未使用过,所以不知道它是如何工作的)。
- 打开“Internet Information Services (IIS) Manager”(需要以管理员身份运行)
- 在左侧窗格中,您将配置 IIS 实例和站点。如果您第一次运行此程序并且左侧窗格为空(应该有一个默认站点),只需右键单击并选择“添加网站”。
- 右键单击您的网站,选择“添加虚拟目录”。别名是新目录的可见名称,例如
http://yoursite/alias/
,物理路径仅指向您将服务部署到的目录。
自托管
您的控制台应用程序称为自托管。如果这在 Visual Studio 之外不起作用,那么您的app.config
. 我这里有一个简单的例子。
使用 Mono 托管
对于 Mono,您有三个选择:
- 自托管
- 用于生产的带有 mod-mono 的 Apache
- 带有 mod-mono 的 Apache 使用当前目录进行测试
自托管意味着创建一个简单的控制台应用程序来做一些事情
var host = new System.ServiceModel.ServiceHost(typeof(MyService));
host.Open();
Console.WriteLine("Service running");
foreach (var se in host.Description.Endpoints)
Console.WriteLine(se.Address);
Console.ReadLine();
host.Close();
并在命令行上使用 Mono 运行它。
有关如何使用 mod-mono 设置 apache 的信息,请参阅无法使用 mod-mono 访问托管在 Apache 中的 WCF 服务,包括一些示例。
您在这里还有两个选择:将您的服务复制到 Apache 选择的某个目录中 - 或者您也可以mod-mono-server
手动启动并指定任意目录,例如用于测试的当前目录。