gpt4 book ai didi

.net - 通过 WCF 服务将(代理)SoapHeader 传递给 ASMX 服务

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:39 25 4
gpt4 key购买 nike

我们有一个现有的 ASMX Web 服务 (.NET 2.0),我现在正在使用 WCF 和 .NET 4.0 创建一个新服务。

ASMX 服务通过 SoapHeader 实现了自定义身份验证,看起来像这样,其中 SecurityContextExtension 处理身份验证:

[WebService(Namespace = "http://tempuri.org/")]
public class ExistingWebService : WebService
{

public CustomContextHeader CustomContextHeader{ get; set; }

[WebMethod, SoapHeader("CustomContextHeader")]
[SecurityContextExtension]
public string GetExisting(int customerId)
{
// do stuff

return a string value;
}
}

新服务需要在现有 ASMX 服务上调用此方法,因此我已将其作为服务引用添加到我的项目中。

CustomContextHeader 作为方法的参数公开(我猜是通过 WCF 服务引用的魔力!)所以我从我的 WCF 服务调用 ASMX 看起来像这样:

[ServiceContract]
public interface INewService
{
[OperationContract]
string GetNew(int myId);
}

public class NewService : INewService
{
public string GetNew(int myId)
{
// do stuff

using (var client = new ExistingWebServiceSoapClient())
{
var new = client.GetExisting(CustomContextHeader, myId);
}

// do more stuff
}
}

访问新 WCF 服务的客户端也访问现有的 ASMX,因此已经能够生成正确的 CustomContextHeader 并传递给 GetExisting 方法。

因此,如果客户端要生成与 ASMX 相同的 CustomContextHeader,我该如何更改我的 WCF 服务以接受并提取它以通过参数传递给 ASMX?

我用 Google 搜索并发现了很多关于 Message Contracts 的信息和 WCFExtras但不太清楚如何实现这两种方法来实现我的需要。我不想添加另一个依赖项,如 WCFExtras,因此任何可以使用开箱即用的 .NET 4.0 功能的解决方案将不胜感激!

最佳答案

最终使用了 WCFExtras+

关于.net - 通过 WCF 服务将(代理)SoapHeader 传递给 ASMX 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6582637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com