Skip to main content
 首页 » 编程设计

c#之如何在源代码中隐藏 .asmx web 服务 API 端点

2024年02月06日35cyq1162

我在 aspx 页面的脚本标签内调用 .asmx 服务。当我查看页面源代码时,它显示了我的网络服务。

如何保护网络服务不被暴露? 因为当有人查看页面源代码时,他可以看到 Web 服务名称及其所有方法名称。

.aspx 页面:

<asp:PlaceHolder ID="divBody" runat="server"> 
        <div class="aa-dashboard-wrapper"> 
            <asp:Textbox id="textbox1" runat="server"></asp:Textbox>  
        </div> 
</asp:PlaceHolder> 

这是我的脚本标签,它位于我的 aspx 页面的底部。

    $("#textbox1").autocomplete({ 
                source: function (request, response) { 
                    $.ajax({ 
                        url: '<%=ResolveUrl("~/WebService.asmx/webServiceMethod") %>', 
                        data: "{ 'keyword': '" + request.term + "'}", 
                        dataType: "json", 
                        timeout: 20000, 
                        type: "POST", 
                        contentType: "application/json; charset=utf-8", 
                        success: function (data) { 
                        }, 
                        error: function (response) { 
 
                        }, 
                        failure: function (response) { 
 
                        } 
                    }); 
                }, 
                select: function (e, i) { 
 
                }, 
                minLength: 2 
            }) 
 
</script> 

请您参考如下方法:

虽然您无法阻止用户查看您服务的 URL,但您可以阻止他们查看它的文档 - 只需将其放在 web 的 system.web 标记中.config

<webServices> 
    <protocols> 
        <remove name="Documentation" /> 
    </protocols> 
</webServices> 

参见 https://support.microsoft.com/en-us/kb/815149关于“删除文档协议(protocol)”