如何在asp.net中限制对公共用户的webservice访问

时间:2012-05-15 05:55:27

标签: asp.net asmx

我有网络服务页面(webservice.asmx)正在使用javascript通话,我想要 除了来自aspx或
的本地页面的请求之外,限制对此Web服务的公共请求 来自javscript。 Web服务在执行之前检查表单身份验证但是 服务列表是可查看的,参数可在.asmx页面中访问。用户可以
键入www.site.com/webservice1.asmx以访问我的Web服务。所以我需要限制这个 选项。我们如何保护asmx文件免受公共用户访问。?

1 个答案:

答案 0 :(得分:1)

我认为您希望限制对Web服务的HTTP GET访问,修改Web.config的webServices部分:

<webServices>
     <protocols>
       <add name="HttpPost" />
       <remove name="HttpGet" />
       <remove name="Documentation"/>
     </protocols>
</webServices>     

修改 - 禁用HTTP GET的其他方法

  1. 在您的网络方法上方添加此属性:

    [ScriptMethod(UseHttpGet = false)]
    
  2. 在每个网络方法中添加此检查:

    if (HttpContext.Current.Request.HttpMethod == HttpMethod.POST)
        // Do your work