我有一台IIS服务器,它运行一个包含多个Web服务的应用程序。每个Web服务都有一个.asmx
文件。出于某种原因,我必须限制对Web服务的访问,因此我删除了一些asmx
文件。
现在我的问题是,即使没有asmx文件,客户端仍可以调用所有Web服务吗? (我没有更改代码,只删除了.asmx
个文件)
答案 0 :(得分:0)
如果没有asmx文件,则无法使用后面的代码。 IIS不知道用于实现服务的类。
您需要重新创建asmx文件。他们的内容很简单。它只是一行,如
<%@ WebService Language="C#" CodeBehind="ASWBW_002.asmx.cs" Class="P0300_GUI.Interfaces.ASWBW_002" %>
您只需要包含命名空间的实现类的名称。通常这是文件名和路径的一部分。
答案 1 :(得分:0)
ASMX文件用作合同及其实现之间的绑定。客户端在访问ASMX时,相应的IIS处理程序调用底层类以获取要触发的方法。删除此绑定会导致服务不可用。
要获得适当的解决方案,请按以下步骤操作: - 通常,您需要确定所有客户端可以访问您的Web服务的人员。完成后,您需要一种机制来为它们提供WSDL文件,以便它们可以生成它们的代理类。
完成后,通过删除文档协议,使用步骤Disable Service Help Page禁用WSDL发现。发布这个,没有客户端可以获得WSDL,因此任何更新(甚至现有已验证的客户端)
如果要实现选择性可用性,则必须使用WS-Security策略合并基于SOAP Header的安全性。
请注意,WS- *和ASMX技术现在被视为遗留技术,不受Microsoft支持。请改为升级到WCF / WebAPI。