2016-10-12 51 views
2

我想測試一個可能的應用程序。這是一個ASP.net網站,將在其默認頁面中接收xml文件。 客戶端將是一個應用程序,它將生成一個包含該文件的HTTP Post。發送文件到Asp.net

沒有UI介入。

我製作了原型Asp.Net Web應用程序(Framework 4.5.2)和一個Winform應用程序來執行它。

我已經嘗試在Winform應用程序中的HTTP發佈代碼的所有方式,但雖然WebApp的default.aspx被擊中,我無法獲得有效載荷。

這包括:文件中

  • 測試程序閱讀和發表的字符串。當它讀取Request.InputStream時,網頁中的StreamReader會生成一個空字符串。

  • WebClient.UpLoadFile嘗試。 Request.Files集合是空的。

使用郵遞員和POST參數的StreamReader方案工作。即 文件的主體:「opennode這是一個節點closenode」產生一個xml字符串輸出。

我應該提到我現在使用IDE來託管網頁,以防這對行爲有任何影響。

鑑於應用程序和網站之間自動傳輸的要求,解決此問題的正確方法是什麼?

我通常會建立一個網絡服務,但網站的消費者認爲這是矯枉過正,只是想打一個URL與文件。

WebClient嘗試的應用程序代碼如下。

private void OpenFile(string _file) 
    { 

     // WEBCLIENT TRY 
     using (WebClient client = new WebClient()) 
     { 
      client.UploadFile("http://localhost:21726/Default.aspx", _file); 
     } 


    } 

ASP.NET代碼 'Web客戶端接收' 修改如下從Microsoft Webclient.UploadFile例子(見下文)示例代碼

private void ProcessData(HttpRequest request) 
    { 
     try 
     { 

      // WEB CLIENT RECEIVE ATTEMPT 

       foreach (string f in Request.Files.AllKeys) 
       { 
        HttpPostedFile file = Request.Files[f]; 
        file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName); 
       } 


     catch (Exception ex) 
     { 

      string message = ex.Message; 
      throw; 
     } 
    } 

網頁。 行爲沒有變化。 所以它一定是WinApp測試器。

<%@ Import Namespace="System"%> 
<%@ Import Namespace="System.IO"%> 
<%@ Import Namespace="System.Net"%> 
<%@ Import NameSpace="System.Web"%> 

<Script language="C#" runat=server> 
void Page_Load(object sender, EventArgs e) { 

    foreach(string f in Request.Files.AllKeys) { 
     HttpPostedFile file = Request.Files[f]; 
     file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName); 
    } 
} 

</Script> 
<html> 
<head></head> 
<body> 
<p> Upload complete. </p> 
</body> 
</html> 
+2

您應該添加一些不適用的代碼以及有關它的特定問題。如果沒有提供代碼,很難爲您提供幫助(無需自己編寫代碼) –

+0

爲Webclient嘗試添加代碼片段,因爲這是首選解決方案。 –

回答

0

的問題是雙重的: web應用程序出現在IDE給人沒有文件的症狀在RequestFiles容器上方一字排開出下確定。 一旦我發佈到本地IIS它開始將錯誤500回傳給WinApp測試客戶端。 我們追溯到目錄訪問權限(有趣的是)。我們正在愉快地嘗試寫入網站以外的位置。
因此,向該網站添加了上傳子目錄並設置了完整權限。 然後改變了文件寫入代碼:

foreach(string f in Request.Files.AllKeys) 
    { 
     //File.Create(@"C:\test1.txt"); 
     HttpPostedFile file = Request.Files[f]; 
     file.SaveAs(Server.MapPath("~/Upload/") + file.FileName); 
    } 

所有正在工作。