无法从本地机器调用 WCF 服务

Posted

技术标签:

【中文标题】无法从本地机器调用 WCF 服务【英文标题】:Not able to call WCF service from local machine 【发布时间】:2012-06-14 02:10:00 【问题描述】:

我在 VS 2008 中使用 WCF 服务应用程序模板创建了一个 WCF 网络服务。 在同一个解决方案中,我创建了一个 Web 应用程序项目,并将 Web 引用添加到我提供服务 url 的服务中。

现在,当我从我的 Web 应用程序项目中调用服务方法时,我得到了超时,我无法从调用服务方法中获取 O/P。这是我用来从服务调用方法的代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.htmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using WebApplicationClient.WCFService;

namespace WebApplicationClient

    public partial class _Default : System.Web.UI.Page
    
        protected void Page_Load(object sender, EventArgs e)
        

        

        protected void Button1_Click(object sender, EventArgs e)
        
            Service1 svc1 = new Service1();
            String ex = svc1.GetData(1,true);


        
    

编辑: 我已经弄清楚了问题所在。我向服务添加了 Web 引用,而不是服务引用,它起作用了。谁能告诉我两者的区别?

另外,当我运行 WCF 服务时,我会收到以下消息: 从命令窗口运行此命令:

 svcutil.exe http://localhost:1787/Service1.svc?wsdl

但操作系统无法识别 svcutil.exe。我猜它被放置在某个地方,我也必须给出路径,这是问题吗?我在哪里可以找到这个?

【问题讨论】:

你的 WCF 服务启动了吗? @RQDQ 是的,我已经找到了问题所在。我向服务添加了一个 Web 引用而不是服务引用,它起作用了。你能告诉我两者的区别吗? Web 参考是较旧的 Web 服务堆栈(我相信只有 SOAP)。服务引用是较新的 WCF 堆栈。但是,如果您能够设置网络参考,它应该可以正常工作... 查看here 以获得一些解释。 @RQDQ 不,它不适用于 WEB Reference。此外,我还编辑了一些疑问。 【参考方案1】:

但操作系统无法识别 svcutil.exe。我猜它被放置 somehwere,我也必须给出路径,这是问题吗?在哪里 我能找到这个吗?

SvcUtil.exe 是帮助为 wcf 服务创建代理的实用程序。您可以通过打开 Visual Studio 命令提示符而不是 Windows 命令提示符轻松访问该实用程序。

如果你在 C 盘安装了 VS,它会位于这里。

C:\Program Files\ Microsoft Visual Studio 10.0\VC

这个thread 讨论了添加Web 引用和添加服务引用之间的区别。在您的情况下,我建议使用服务参考而不是 Web 参考。

【讨论】:

当我尝试运行它时出现错误。错误:无法创建输出文件:C:\Program Files\Microsoft Visual Studio 9.0\VC\Service1.cs 访问路径 'C:\ Program Files\Microsoft Visual Studio 9.0\VC\Service1 .cs' 被拒绝。我没有管理员权限,这是问题吗?我可以更改它生成 o/p 的路径吗? 打开 VS 命令提示符后,只需移动到其他驱动器,例如 D: 或 E:,然后调用 svcutil.exe。前任。 D:\>svcutil.exe localhost:1787/Service1.svc?wsdl 我不能做CD D:,不知道为什么,我会在我家的机器上试试看它是否有效。

以上是关于无法从本地机器调用 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务端点无法从本地访问

WCF 服务错误没有在 HTTPS 上侦听的端点

无法从 IIS 访问我的 WCF [关闭]

使用 Windows 身份验证从 Windows 应用商店应用调用 WCF 服务

对 WCF 的 WPF 服务调用无法访问已释放的对象

从 MVC 项目调用 WCF 服务时出错