2011-01-28 236 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,它的工作原理。 也許是因爲終端直接連接到網絡服務器運行的計算機? 無論如何,它的工作原理。