1

在我的 Sencha touch 应用程序中。我使用 .net 网络服务来获取 xml 格式的数据。我使用 Ext.Ajaxrequest 调用它,如下所示

var frmurl ='http://Server/sencha/WS/web.asmx/GetData';
Ext.Ajax.request({
     url: frmurl,
     method: 'post',
     params: {
                       whereCondition :WhereCond,
                       ReportName:rptname
         },                                 
    success: function(Response) {
                 renderReport(Response.responseText,'1');
    }
    , failure: function (Response, request)
    {
       Ext.MessageBox.alert('Error, unable to load data');
    } //</failure> 

});

它工作正常并给我正确的结果,但我需要在 web.config 中添加以下标签以使其正常工作

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

但正因为如此,任何人都可以调用 webmethods,这是主要的安全问题。如果我删除此标签,则无法调用 web 服务并给出内部服务器错误。

请帮我。谢谢

4

1 回答 1

1

您会发现,您需要启用至少一个“协议”才能使客户端系统与您的 Web 服务通信,因此HttpSoap如果您的客户端设备支持 SOAP,您可以启用,或者HttpPostLocalhost如果您的客户端和服务器始终开启,则可以启用同一台机器(您的机器不会像您明确构建移动网站那样)。

但是,您还发现,Web 服务在发布时可以被任何人访问,除非您设置某种身份验证,或通过其他方式限制对 Web 服务的访问,例如通过 IP 限制地址等

您可能还不知道,但这个问题/答案与您的相似,应该可以帮助您找到一种相当标准的方式来实现您所追求的目标。

于 2012-05-11T12:49:25.510 回答