WCF(svc)服务,但客户端想要连接就好像它是“.asmx”

时间:2011-01-17 22:19:38

标签: wcf web-services asmx

我有这种情况。客户要求我们拥有WebService。我创建了一个WCF服务。在我们将他们的网址发送到网络服务描述后,客户说

  

因为它是我们不能消耗WCF   服务,你能发布一个网络吗?   服务?

现在我想知道,他们问我asmx ......对吗? 有什么方法可以“提供”我的WCF服务作为asmx服务,所以我不必重写整个事情?

我的第一个“解决方案”是让.asmx文件直接调用我的.svc文件...我不知道。我没有尝试,但我正朝着这个方向前进。

任何想法都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

完全可行。只需使用使用basicHttpBinding或wsHttpBinding公开服务的端点。 URL的“文件扩展名”对客户端没有任何影响,只对rerquest / response的内容有所影响。

以下是对另一个SO问题的引用: REST / SOAP endpoints for a WCF service

答案 1 :(得分:0)

非常有可能。遵循下面提到的步骤,您将能够将WCF服务公开为ASMX端点。

  1. 添加新的网络服务文件(.asmx)
  2. 现在打开web .asmx文件的节点并删除.asmx.cs文件
  3. 删除一次.cs文件。你会找到wcfasasmx.asmx文件。
  4. 我将WCF类名称作为Service1(来自基本WCF服务),此类存在于当前的NameSpace中。所以我将类名更改为mynamespace.Service1

  5. 一些更改是代码,如下所示 -

  6. 在Tag中的web.config中添加以下代码

      <system.web>
       <webServices>
         <conformanceWarnings>
           <remove name='BasicProfile1_1'/>
         </conformanceWarnings>
       </webServices>
      </system.web>
    
  7. 在界面上添加以下2个属性(在WCF的 servicecontract 上)

     [WebService(Name = "Service1")]
     [WebServiceBinding(Name = "Service1", ConformsTo =   WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
    
  8. 在每个操作合同上添加[WebMethod]属性。

    [OperationContract]
    [WebMethod] 
    string GetData(int value);
    
  9. 您的服务现在也可以被asmx客户端使用。