0

我们有一些用 asmx web 服务用ASP.NET webforms 编写的 web 应用程序。现在我们想添加一些 web 服务,它们的用途与旧的不同。我们决定使用WCF框架。

我的同事在我们的解决方案中创建了一个新项目,他在其中实现了 Web 服务。不幸的是,他没有使用 WCF* 项目模板,而是使用以下方法启动 WS 的普通控制台应用程序:

public static void StartWS() {
  if (_selfHost!=null)
    StopWS();

  Uri baseAdress = new Uri(WSIntegrationService.ServerUrl);
  _selfHost = new ServiceHost(typeof(WSIntegrationService), baseAdress);
  _selfHost.AddServiceEndpoint(typeof(IWSIntegrationService), new WSHttpBinding(SecurityMode.None), WSIntegrationService.EndPointName);
  _selfHost.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });
  _selfHost.Open();
  logger.Info("Integration WS started on adress " + baseAdress);
}

现在我必须将项目集成到我们的 Web 应用程序(解决方案中的另一个项目)。

  1. 最简单的方法是什么?
  2. 如何确保旧的 asmx 服务和新的 WCF 服务都可以运行?
4

1 回答 1

0

最后解决方案并不难:

  1. 在 Web 应用项目中,选择添加新项目 -> WCF 服务。这应该会创建 Service.svc、Service.svc.cs 和 IService.cs。它还会修改您的网络配置。现在您可以尝试使用自动生成的方法是否有效DoWork。只需使用类似 SoapUI 应用程序的东西来做到这一点。还可以尝试浏览到 svc 文件并检查 wsdl(例如http://localhost:2753/WSIntegration/Service1.svc?wsdl

  2. 删除文件 IService.cs 和 Service.csv.cs。修改 Service.svc 文件,使其仅包含对实现 WS 的类的引用,例如:

就这样。我还没有将解决方案部署到 IIS,但我预计那里不会有任何问题。只要我这样做。如果需要任何其他步骤,我会更新答案。

于 2013-08-25T16:04:21.887 回答