【问题标题】:Hide asmx web methods conditionally in C#在 C# 中有条件地隐藏 asmx Web 方法
【发布时间】:2011-04-04 15:53:06
【问题描述】:

如何有条件地隐藏网络方法?如果 web.config 中的标志设置为 false,我不想公开 web 方法。如果是真的,那我就暴露web方法。

含义:该方法应该只在标志为真时对客户端可见,否则它不应该对客户端可用。

这在 C# 中可行吗?

【问题讨论】:

  • “暴露”是什么意思?
  • 我的意思是,该方法只有在 web 配置值为 true 时才对客户端可见,否则它不应该对客户端可用。

标签: c# web-services conditional asmx webmethod


【解决方案1】:

您可以检查方法中的标志,如果未设置则抛出异常。

【讨论】:

  • 如果标志为假,我根本不想让客户端看到这个方法。
  • 这并不简单。您可以尝试覆盖列表系统;祝你好运。
  • 嗯.. 我想我必须保持方法不变:(
【解决方案2】:

你真的不能这样做。

您的客户“看到”了 Web 方法,因为它们在 WSDL 中列出。 WSDL 生成是相当静态的——它基于您的方法的 [WebMethod] 属性。确实无法从生成的 WSDL 中删除项目。

如果您可以切换到 WCF,您会发现这要容易得多。同时,您只需要使用授权 - 阻止某些客户端调用某些方法。

【讨论】:

  • 感谢 John,我们正在迁移到 WCF,但这个 asmx 需要一些时间才能看到它发生。
猜你喜欢
  • 2020-01-28
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多