【问题标题】:Trouble adding web service/service reference on the aspx page在 aspx 页面上添加 Web 服务/服务引用时遇到问题
【发布时间】:2011-09-16 06:35:15
【问题描述】:

我认为我的 web.config 正确,但我想知道如何在 aspx 页面上添加服务引用或 Web 服务本身,以便我的脚本可以访问它。

这是我所做的,但它不起作用:

<%@ ServiceHost Language=C# Service="WebService" CodeBehind="http://urlToMyService.svc"%>

<asp:ScriptManager ID="ScriptManager1" runat="server">
   <Services>
      <asp:ServiceReference 
         Path="http://urlToMyService.svc"/>
   </Services>
</asp:ScriptManager>

我想我需要添加&lt;%@ ServiceHost %&gt;&lt;asp:ScriptManager&gt;,但我想要一个关于我需要包含的每个参数的更清晰的示例。

【问题讨论】:

  • 您想在哪里访问您的服务?服务器/客户端?
  • Web 服务位于服务器上,因此我在项目中添加了对它的服务引用。重点是我想在 javascript 上使用 SOAP Web 服务。
  • 我认为你应该重命名你的问题标题来指定它。 :)

标签: asp.net wcf web-services ajaxpro


【解决方案1】:

您只能添加对本地服务(即存在于您的 ASP.NET Web 应用程序中的服务)的引用。所以典型的服务参考是这样的

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="~/HelloWorldService.svc" />
    </Services>
</asp:ScriptManager>

aspx 页面(或母版页或用户控件)上。您不需要 &lt;%@ ServiceHost %&gt; 等 - 将出现在 svc 文件中。

请注意,将服务引用添加到ScriptManager 会生成一个 java 脚本服务代理,这将简化从 java-script 调用 Web 服务的过程。这对于从代码(在服务器端)调用服务没有用。请参阅本教程以开始从 java-script 调用服务:http://www.codeproject.com/KB/aspnet/wcfinjavascript.aspx

对于从服务器端代码调用服务,您必须从 Visual Studio 添加服务引用(右键单击您的项目并选择添加服务引用上下文菜单) - 在这种情况下,VS 会生成代理代码来调用服务。

【讨论】:

  • 顺便说一句,我正在尝试使用 AjaxPro2 在 javascript 中使用 Web 服务,但它无法检测到引用。所以我所做的是将路径设置为 ~/Service References/MyWebService/MyWebService.wsdl 但我遇到了一些关于 js 方法的错误。我会在尝试一些东西后编辑我的主要帖子。
  • @Bahamut,您的服务在哪里?服务端点 (url) 必须在 Web 应用程序中。您正在使用的是无法正常工作的 WSDL 路径。它必须是本地 url(例如项目中 asmx 或 svc 文件的 url)。
  • 我明白了。它托管在单独的机器上。我可以改用它的网址吗?由于问题的要点已经回答,因此将其标记为答案。
  • @Bahamut,从单独的机器调用服务将使其跨域 AJAX 调用。浏览器通常对跨域调用设置很多限制。您可以在应用程序中创建本地代理服务,将调用重定向到远程服务,也可以使用 JSONP 等技术进行跨域调用。
  • 我添加的服务引用算不算代理服务?我可以将 JSONP 用于 SOAP Web 服务吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多