我在C#中有一个Web服务应用程序。当我在Visual Studio中运行Debug时,它在http://localhost:######
启动服务并显示Default.htm页面,其中包含用于测试可以对Web服务进行的不同调用的链接。
有没有办法调用这个本地运行的版本来从另一台计算机上测试它?我试着打电话给测试页面上的链接,但是用运行它的机器的IP地址替换了localhost,但它说它无法连接到服务器。
答案 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)
将您的服务包装在控制台应用程序中,以便可以访问它。
MyService
,可能是MysServiceConsoleHost
或某些传真)。
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)
答案 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,它可以工作。 也许是因为终端直接连接到网络服务器运行的计算机? 无论如何,它的工作原理。