WCF (svc) 服务,但客户端希望像“.asmx”一样进行连接

发布于 2024-10-12 15:03:35 字数 341 浏览 4 评论 0原文

我有这样的场景。客户要求我们提供一个 WebService。我创建了一个 WCF 服务。在我们向他们发送了网络服务描述的 URL 后,客户说

事实上我们无法使用 WCF 服务,你可以将其发布到网络上吗 服务?

现在我想知道,他们要求我提供 asmx...对吧? 有没有什么方法可以让我“提供”我的 WCF 服务作为 asmx 服务,这样我就不必重写整个事情?

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

任何想法将不胜感激。

托尼

I have this scenario. Client requested us to have a WebService. I created a WCF Service. After we sent them our url to the web service description, client says

As it is we cannot consume a WCF
service, can you publish it a web
service?

Now i am wondering, they are asking me for a asmx... right?
Is there any way that i can "offer" my WCF service as an asmx service so i don't have to rewrite the whole thing?

my first "solution" is to have an .asmx file calling my .svc files directly... i don't know. I havent tried but i am heading on that direction.

Any ideas would be highly appreciated.

Tony

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

稳稳的幸福 2024-10-19 15:03:35

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

这是对另一个SO问题的引用:
WCF 服务的 REST/SOAP 端点

It is completely do-able. Just use an endpoint that exposes the service using basicHttpBinding or wsHttpBinding. The "file extension" of the URL doesn't make any difference to the client, only the content of the rerquest/response.

Here's a reference to another SO question:
REST / SOAP endpoints for a WCF service

落墨 2024-10-19 15:03:35

这是很有可能的。按照下面提到的步骤操作,您将能够将 WCF 服务公开为 ASMX 端点。

  1. 添加新的 Web 服务文件 (.asmx)
  2. 现在打开 Web .asmx 文件的节点,并
  3. 在删除 .cs 文件后删除 .asmx.cs 文件。您将找到 wcfasasmx.asmx 文件。
  4. 我的 WCF 类名称为 Service1(来自基本 WCF 服务),并且该类存在于当前命名空间中。因此,我将类名称更改为 mynamespace.Service1

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

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

     ;
       <网络服务>
         <一致性警告>
           <删除名称='BasicProfile1_1'/>;
         
       
      
    
  7. 在接口上添加以下 2 个属性(在 WCF 的 servicecontract 上)

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

    <前><代码>[操作合同]
    [网络方法]
    字符串 GetData(int 值);

您的服务现在也可以被 asmx 客户端使用。

It's very much possible.Follow the steps mentioned below and you'll be able to expose WCF service as ASMX endpoint.

  1. Add new web service file (.asmx)
  2. Now open the node of web .asmx file and delete .asmx.cs file
  3. Once .cs file is deleted. You will find wcfasasmx.asmx file.
  4. I have WCF class name as Service1(from the basic WCF service) and this class is present in current NameSpace. So I changed class name as mynamespace.Service1

  5. Some changes is code as shown below-

  6. In web.config in Tag add following code

      <system.web>
       <webServices>
         <conformanceWarnings>
           <remove name='BasicProfile1_1'/>
         </conformanceWarnings>
       </webServices>
      </system.web>
    
  7. Add following 2 attribute on interface(on servicecontract of WCF)

     [WebService(Name = "Service1")]
     [WebServiceBinding(Name = "Service1", ConformsTo =   WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
    
  8. Add [WebMethod] attribute on each operation contract.

    [OperationContract]
    [WebMethod] 
    string GetData(int value);
    

your service can now be consumed by asmx client too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文