在ASP.NET应用程序中使用WCF http Web服务

时间:2013-08-25 12:43:05

标签: asp.net .net wcf web-services asmx

我们使用一些asmx Web服务在 ASP.NET webforms中编写了Web应用程序。现在我们想要添加一些toher 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服务都可以运行?

1 个答案:

答案 0 :(得分:0)

最终解决方案并不那么难:

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

  2. 删除文件IService.cs和Service.csv.cs。修改Service.svc文件,因此它只包含对实现WS的类的引用,例如像这样:

     
  3. 这就是全部。我还没有将解决方案部署到IIS,但我不认为那里有任何问题。我会尽快这样做。如果需要任何额外的步骤,我会更新unswer。