C# 测试Web服务

C# 测试Web服务,c#,web-services,visual-studio-2010,C#,Web Services,Visual Studio 2010,我在C#中有一个web服务应用程序。当我在Visual Studio中运行调试时,它会在http://localhost:######并显示Default.htm页面,其中包含测试可对web服务进行的不同调用的链接 有没有办法调用这个本地运行的版本从另一台计算机上测试它?我尝试调用测试页面上的链接,但将localhost替换为运行它的计算机的IP地址,但它表示无法连接到服务器。如果使用Visual Studio的内置web服务器(Cassini),则只能在本地调用。如果你想远程连接,你必须安装I

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


有没有办法调用这个本地运行的版本从另一台计算机上测试它?我尝试调用测试页面上的链接,但将localhost替换为运行它的计算机的IP地址,但它表示无法连接到服务器。

如果使用Visual Studio的内置web服务器(Cassini),则只能在本地调用。如果你想远程连接,你必须安装IIS并配置你的项目来使用它。

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


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

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

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

  • 在您的解决方案中创建一个新的控制台应用程序项目,并将其命名为合理的名称(如果您的服务命名为
    MyService
    ,可能是
    myserviceConsoleHost
    或某种传真)
  • 在此项目中包含对服务项目的引用
  • 在您的新项目(program.cs)中,有如下内容:

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

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


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

    我可以在本地主机上测试Web服务。我有一个windows CE摩托罗拉终端,连接到我的电脑。我在电脑上安装了VS2008。 我的计算机地址是xxx.xxx.x.xxx,webserver是localhost:62209,所以在终端我使用webservice地址:并且它可以工作。 可能是因为终端在Web服务器运行时直接连接到计算机?
    不管怎样,它是有效的

    Web服务通常没有default.htm,而是.asmx页面。你能澄清一下吗?因为这是一个需要测试的web服务,我想你会使用http来访问它。@Andy:不知道你的意思。这与IIS的功能完全相同,同时方便您在调用代码时单步执行代码(通过直接访问、测试应用程序、实时连接等)。这是通过Visual Studio中的Project->Build Deployment包完成的吗?我以前没有真正使用过IIS,所以我一直在尝试在线查找一些好的指南。如果您还没有,请安装IIS:下一步,您可以转到“构建->发布”并选择“文件系统”作为位置,然后单击“…”浏览到您要放置它的位置。选择本地IIS并创建新的Web应用程序(按钮位于该窗口的左上角)。将其设置为目标并发布。
    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();
        }
      }
    }