2011-01-28 179 views
1

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

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

+0

Web服务通常没有default.htm,但是.asmx页面。你能澄清吗? – Victor 2011-01-28 15:28:58

回答

6

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

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

+0

这是通过Visual Studio中的Project - > Build Deployment Package完成的吗?我之前没有真正使用过IIS,所以我一直在努力在网上找到一些好的指南。 – John 2011-01-28 15:46:18

+0

如果您尚未安装IIS,请执行以下操作:http://learn.iis.net/page.aspx/28/installing-iis-7/on-windows-vista-and-windows-7/ 接下来,您可以进入Build - > Publish并选择File System作为位置,然后点击“...”浏览到你想放置的位置。选择本地IIS并创建一个新的Web应用程序(按钮即可在该窗口的左上角)。将其设置为您的目标并发布。 – rswafford 2011-01-28 16:01:55

0

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

0

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

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

1

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

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

1

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

http://progrium.com/localtunnel/

它将设立一个代理,将指向你LOCALMACHINE并可以在你的机器的外部访问。

0

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