Visual Studio 中的 WCF Web 服务

Posted

技术标签:

【中文标题】Visual Studio 中的 WCF Web 服务【英文标题】:WCF Webservices in visual studio 【发布时间】:2013-10-25 09:36:41 【问题描述】:

我是新手,需要一些帮助。 我在 Visual Studio 中创建了一个 wcf 服务应用程序并编写了一个简单的登录方法,该方法接收参数用户 ID 和密码,然后返回一个已登录用户对象的对象,该对象具有两个字段名称和组织。

LoggedUser 类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;

namespace crmpp_android_service

    public class LoggedUser
    
        public string name;
        public string organization;
        [DataMember]
        public string Name
        
            get  return name; 
            set  name = value; 
        
        [DataMember]
        public string Organization
        
            get  return organization; 
            set  organization = value; 
        
    

运营合同:

[OperationContract]
        [WebInvoke(Method = "GET",
           ResponseFormat = WebMessageFormat.Json,
             RequestFormat = WebMessageFormat.Json,
            UriTemplate = "login/?userid=userid & pass=pass"
        )]
        [Description("User Login return username & Organization currently affiliated")]
        LoggedUser login(string userid, string pass);

Service1.svc 中的方法实现:

  public LoggedUser login(string userid , string pass)
        
            LoggedUser log_usr = new LoggedUser();
            log_usr.name = "Ahsan Mehdi";
            log_usr.organization = "JDC";
            return log_usr;
        

但是当我通过按 ctrl+F5 运行应用程序时,它会像这样打开一个 wcf 测试客户端并返回数据。

当我为服务编写 URL 时,我无法从 android 应用程序或浏览器获得响应,它向我显示了这样的页面。

http://localhost:57127/Service1.svc

当完整的网址像这样

http://localhost:57127/Service1.svc/login/?userid=abc123&pass123

它不会返回任何类似指南或帮助的信息。

【问题讨论】:

【参考方案1】:

据我了解,您希望访问托管在您的本地主机上而不是 IIS 上的这个 WCF url。要访问您的 localhost 网络服务,请使用它而不是 localhost

http://10.0.2.2:Port/Service1.svc/login/?userid=abc123&pass123

在 IIS 上使用分配给您的系统 IP。

http://192.168.0.123:Port/Service1.svc/login/?userid=abc123&pass123

我希望这能解决您关于连接到 android 项目的问题。

【讨论】:

【参考方案2】:

获取 WCFstorm。当你运行它时,添加一个新服务,并复制服务的 url(在你的截图中,它显示为:

localhost:57127/Service.svc

这将允许您测试服务。

这是我在工作中用来测试 WCF 服务的。

我使用的另一个工具是 Fiddler。

【讨论】:

感谢您的回复,但实际上我想从 android 应用程序访问这些服务方法。我将不得不使用服务方法路径作为 localhost:57127/Service1.svc/login/?userid=abc123&pass123 所以这应该以 json 格式返回一些数据,但事实并非如此。 您设置了哪些端点?你能得到一个wsdl吗? 我从这个 url localhost:57127/Service1.svc?singleWsdl 得到一个 xml 页面,这个 url svcutil.exe localhost:57127/Service1.svc?wsdl 不起作用 在您的屏幕截图中,您要查找的 wsdl 的 url 应该是 localhost:57127/Service1.svc?wsdl,还是您移动了它?另外,我不知道通过浏览器 url 调用服务的任何方法。您将需要设置端点并调用它们。 ***.com/questions/802518/… 可能有助于更好地解释它。 感谢您的回复。我没有移动该服务,我能够通过 wcf 测试客户端正确测试该服务。让我检查端点

以上是关于Visual Studio 中的 WCF Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

为 WCF 负载测试加载 UI Vs Visual Studio 2010 [关闭]

Visual Studio/SOAP -“添加服务引用”与“添加 Web 服务引用”

使用 Visual Studio 2010 查看完整的 WCF 错误响应

WCF 未将所有内核与 Visual Studio 2010 负载测试一起使用

如何通过 HTTP Get 使用 WCF 服务(在 Visual Studio 2010 中)

Wcf 测试客户端如何在没有 Visual Studio 的情况下使用?