如何从javascript连接到同一解决方案中的Web服务

时间:2009-08-03 15:06:01

标签: javascript visual-studio web-services

我有一个包含多个项目的解决方案,一个是网站,另一个是单独的Web服务器。 (它们将驻留在不同的主机上。)我需要从网站上的一些javascript连接到Web服务。然而,尽管这似乎是一件显而易见的事情,但我似乎无法做到这一点。 我的Web服务工作正常,我可以在同一解决方案中的单独项目中从Windows窗体应用程序连接到它。 我在aspx文件中的内容是:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="~/../WebService/WebService.asmx" />
    </Services>
</asp:ScriptManager>
<script type="text/javascript">
    function calback(result)
    {
        alert("hello");
    }
    WebService.FunctionToCall("hello", callback);
</script>

但是,服务引用说它无法访问..来自〜

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

尝试使用完整路径而不是〜/../

答案 1 :(得分:0)

这两个项目处于同一解决方案的事实无关紧要。您将它们托管在两台不同的服务器上。只有网址才有意义。

由于您的开发计算机与生产(以及毫无疑问,测试)计算机之间的URL不同,您必须像根据环境更改的任何其他URL一样处理 - 您需要使用配置文件。


我还没有完全测试过这个,但它看起来有效:

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug" >
    <Services>
        <asp:ServiceReference Path="<%$ AppSettings:webServiceUrl %>"  />
    </Services>
</asp:ScriptManager>
web.config中的

  <appSettings>
    <add key="webServiceUrl" value="http://localhost:38759/Enumerations.asmx"/>
  </appSettings>

这实际上确实生成了对上述Web服务的脚本引用。