测试Web服务

时间:2011-01-28 15:24:47

标签: c# web-services visual-studio-2010

我在C#中有一个Web服务应用程序。当我在Visual Studio中运行Debug时,它在http://localhost:######启动服务并显示Default.htm页面,其中包含用于测试可以对Web服务进行的不同调用的链接。

有没有办法调用这个本地运行的版本来从另一台计算机上测试它?我试着打电话给测试页面上的链接,但是用运行它的机器的IP地址替换了localhost,但它说它无法连接到服务器。

6 个答案:

答案 0 :(得分:6)

只能从本地计算机访问嵌入式Visual Studio Web服务器(Cassini)。如果要从其他计算机使用Web服务,则需要将该服务部署到IIS,然后您才能在http://xxx.xxx.xxx.xxx/MyWebService/MyWebService.asmx处找到它(将xxx替换为您的IP地址和MyWebService与适当的IIS网站路径)。

然后,要创建测试应用程序,您可以创建ASP.NET网站或WinForms / Console应用程序,并在Visual Studio中导入Web服务引用。这将自动为您构建代理类,并使调用服务非常容易。

答案 1 :(得分:1)

将您的服务包装在控制台应用程序中,以便可以访问它。

  1. 在您的解决方案中创建一个新的控制台应用程序项目,将其命名为有意义的(如果您的服务名为MyService,可能是MysServiceConsoleHost或某些传真)。
  2. 在此项目中包含对服务项目的引用。
  3. 在您的新项目(program.cs)中有如下内容:
  4. using System;
    using System.ServiceModel;
    
    class Program
    {
      static String TITLE_TEXT = "MyService -- Console Host ({0})" + (System.Diagnostics.Debugger.IsAttached?" [DEBUG]":"");
      static void Main(string[] args)
      {
        Console.Title = String.Format(TITLE_TEXT, "Not Running");
        try
        {
          ServiceHost host = new ServiceHost(typeof(MyService));
    
          Console.Title = String.Format(TITLE_TEXT, "Starting");
          host.open();
    
          Console.Title = String.Format(TITLE_TEXT, "Running");
          Console.WriteLine("Service is started, press any key to exit.");
          Console.ReadKey();
    
          Console.Title = String.Format(TITLE_TEXT, "Closing");
          host.close();
          host = null;
          Console.Title = String.Format(TITLE_TEXT, "Closed");
        }
        catch (Exception ex)
        {
          Console.Title = String.Format(TITLE_TEXT, "Exception");
          Console.WriteLine("An error occured while running the host:");
          Console.WriteLine(ex.Message);
          Console.WriteLine();
          Console.WriteLine(ex.StackTrace);
          Console.ReadLine();
        }
      }
    }
    

    根据需要替换MyService的实例,然后运行它。确保你有一个指定服务端点的.config文件,要运行的端口等等。然后任何人都可以访问你的服务,如有必要,你可以在实时调用期间通过服务进行调试。

答案 2 :(得分:1)

一个非常简单的解决方案是使用localtunnel:

http://progrium.com/localtunnel/

它将设置一个指向本地机器的代理,并且可以在您的机器外部访问。

答案 3 :(得分:0)

如果您使用的是Visual Studio的内置Web服务器(Cassini),那么只能在本地调用它。如果要远程连接,则必须安装IIS并配置项目才能使用它。

答案 4 :(得分:0)

是和否。如果您使用内置的ASP.NET开发服务器(最有可能,因为您有:####),我不相信可以从外部联系。

但是,您可以“部署”到本地IIS实例,然后可以从其他计算机中点击它。 Web Service Studio是一个很好的Web服务测试工具。还有一些非常好的开源工具。我自己喜欢SoapUI。

答案 5 :(得分:0)

我可以在localhost上测试web服务。我有一个Windows CE摩托罗拉终端,连接到我的电脑。我在计算机上安装了VS2008。 我的计算机地址是xxx.xxx.x.xxx,网站服务器是localhost:62209,所以在终端我使用webservice地址:http://xxx.xxx.x.xxx/62209/MyWebservice.asmx,它可以工作。 也许是因为终端直接连接到网络服务器运行的计算机? 无论如何,它的工作原理。