2016-10-12 8 views
2

可能なアプリケーションをテストしようとしています。これは、既定のページでxmlファイルを受信するASP.netサイトです。 クライアントは、ファイルを含むHTTP Postを生成するアプリケーションプログラムになります。ファイルをAsp.netに送信

UIの関与はありません。

プロトタイプAsp.Net Web Application(Framework 4.5.2)とそれを実行するWinformアプリケーションを作成しました。

私はWinformアプリケーションですべての方法でHTTPポスティングコードを試しましたが、WebApp default.aspxがヒットしてもペイロードに到達できません。

これには含まれています:

  • テストアプリがファイルを読み込むと、文字列を投稿。 WebページのStreamReaderは、Request.InputStreamを読み取ると空の文字列を生成します。

  • WebClient.UpLoadFileの試行。 Request.Filesコレクションは空です。

Postmanとパラメータ付きPOSTを使用すると、StreamReaderシナリオが機能します。すなわち ファイルの本文: "opennodeこれはノードのクローズノードです"はxml文字列出力を生成します。

私は、Webページをホストするために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 CODE 'Webクライアントが受信は、' マイクロソフト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; 
     } 
    } 

Webページに従います。 動作の変更はありません。 これは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

問題は2倍であった: Webアプリケーションが出て上記並んRequestFiles容器内に無いファイルの症状を与えるIDEの下にOK表示されます。 ローカルIISに公開した後、WinAppテストクライアントにエラー500を返すようになりました。 これは、ディレクトリアクセス権まで追跡しました(面白いことです)。私たちは喜んでサイト外の場所に書き込もうとしていました。
アップロードサブディレクトリをサイトに追加し、すべてのアクセス許可を設定します。すべてが今取り組んでいる

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

: は、その後にファイル書き込みコードを変更されました。

関連する問題