我想測試一個可能的應用程序。這是一個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>
您應該添加一些不適用的代碼以及有關它的特定問題。如果沒有提供代碼,很難爲您提供幫助(無需自己編寫代碼) –
爲Webclient嘗試添加代碼片段,因爲這是首選解決方案。 –