繁体   English   中英

测试Web服务

[英]Testing a Web Service

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

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

嵌入式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服务引用。 这将自动为您构建代理类,并使调用服务变得非常容易。

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

http://progrium.com/localtunnel/

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

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

  1. 在您的解决方案中创建一个新的控制台应用程序项目,将其命名为有意义的(如果您的服务名为MyService可能是MysServiceConsoleHost或某些传真)。
  2. 在此项目中包含对服务项目的引用。
  3. 在您的新项目(program.cs)中有类似以下内容:

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文件,要运行的端口等。然后,任何人都可以访问您的服务,如有必要,您可以在实时调用期间通过该服务进行调试。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM