【问题标题】:Method overloading in webservicesWeb 服务中的方法重载
【发布时间】:2011-04-16 19:32:26
【问题描述】:

我有 2 个与网络服务相关的问题。

  1. 我们如何在 Web 服务中实现方法重载。
  2. 如何在 Web 服务中实现安全性(身份验证)。

【问题讨论】:

  • 请不要合并问题。您的第一个问题是完全重复的(并在您输入此问题标题时显示在搜索结果中......),第二个问题与第一个问题无关。
  • 您根本不应该使用 ASP.NET Web 服务 (ASMX)。所有新的 Web 服务开发都应该使用 WCF。

标签: c# asp.net web-services


【解决方案1】:

我们如何在 Web 服务中实现方法重载。

如果您使用的是 SOAP,则不能。方法名称在导出的 WSDL 中必须具有唯一名称。根据您使用的技术,有不同的方法来指定方法名称。例如,在 WCF 中,您可以使用 [OperationContract] 属性来指定名称:

[ServiceContract]
public interface IMyService
{
    [OperationContract(Name = "Foo")]
    void Foo();

    [OperationContract(Name = "FooWithId")]
    void Foo(int id);
}

如何在 Web 服务中实现安全性(身份验证)。

following guide 是在 WCF 中实现安全性的一个非常好的开始。

【讨论】:

  • 当我不使用 SOAP 在这种情况下如何实现方法重载?
  • @Vijjendra,那你在用什么?
  • 我在下面的链接中看到了.. 我们可以在 web 服务中实现重载。但你说不..这就是我问stackoverflow.com/questions/3043500/…的原因
  • @Vijjendra,不,您不能在 WSDL 中将它们公开给客户端。在 WCF 中,您可以提供不同的方法名称,如我的示例所示。此方法名称将用于向客户端公开该方法。但它必须是独一无二的。您显然没有使用 WCF,而是使用现在已弃用的经典 ASMX Web 服务。您绝对应该考虑将您的代码迁移到 WCF。
【解决方案2】:

可以重载:

[WebMethod(MessageName = "MaxInt", Description = "Compare two int values 
and return the max value", EnableSession = true)]
public int MaxValue(int a, int b)
{
   return (a > b ? a : b);
}
[WebMethod(MessageName = "MaxFloat", Description = "Compare two float values 
and return the max value", EnableSession = true)]
public float MaxValue(float a, float b)
{
   return (a > b ? a : b);
}

您所说的身份验证究竟是什么意思?您显然可以使用验证密钥来访问 Web 服务。这个问题令人困惑。请详细说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多