在我的Sencha触控应用中。我使用.net websevice来获取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,这是一个主要的安全问题。 如果我删除此标记,则无法调用webservice并导致内部服务器错误。
请帮帮我。 感谢
答案 0 :(得分:1)
您要发现的是,您需要启用至少一个“协议”才能使客户端系统与您的Web服务进行通信,因此如果您的客户端设备支持SOAP或启用,您可以启用HttpSoap
HttpPostLocalhost
如果您的客户端和服务器始终位于同一台计算机上(您的客户端和服务器不会像您明确构建的移动网站那样)。
但是,您还发现,除非您设置某种身份验证,或者通过其他方式限制对Web服务的访问,例如,Web服务在发布时可以访问它们的定义。通过IP地址限制等。
你可能还不知道,但this question/answer与你的相似,应该帮助你达到一种相当标准的方式来实现你所追求的目标。