我有一个带有 Ajax Web 端点的 Winform 托管 WCF 服务。
我还有一个单独的 ASP.NET 项目,页面上有 ScriptManager 组件。
我的问题是,如果我使用 javascript 从 ASP.NET 应用程序的客户端对我的 Winform 托管服务进行服务调用,这是否可行?
我的 ASP.NET 默认页面如下所示:
<script type="text/javascript">
function Button1_onclick() {
// ????How to call a service method?????
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="http://localhost:8000/web" /> //My winform hosted service
</Services>
</asp:ScriptManager>
或者我是否必须将我的服务托管在 IIS 中才能由 AJAX 使用?
无论您是自托管还是 IIS 托管 WCF 服务,如果您的网站和服务不在同一地址(协议、服务器名称、端口),那么您将遇到 XSS(跨站脚本)限制。
有关 ServiceReference.Path 的 MSDN 文档指出: http://msdn.microsoft.com/en-us/library/system.web.ui.servicereference.path.aspx
“Path 属性只能指向本地 Web 服务。换句话说,该属性只能指向与支持 AJAX 的 ASP.NET Web 应用程序位于同一域中的 Web 服务。Path 可以是相对的、应用程序相关的域-相对路径或绝对路径。”
两个最好的选择是:
- 在本地创建代理 - 即在本地 Web 中复制服务的接口,然后将请求从代码传递给 Web 服务。
- 更改服务以以 JSON 格式返回其结果。这将允许您添加动态脚本标签来检索结果。
概述了这两个选项here http://www.simple-talk.com/dotnet/asp.net/calling-cross-domain-web-services-in-ajax/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)