将文件发送到Asp.net

本文关键字:Asp net 文件 | 更新日期: 2023-09-27 18:12:36

我正在尝试测试一个可能的应用程序。它是一个ASP.net站点,将在其默认页面中接收xml文件。客户机将是一个应用程序,它将生成包含该文件的HTTP Post。

不涉及UI。

我制作了原型Asp。. Net Web应用程序(Framework 4.5.2)和一个Winform应用程序来运行它。

我已经尝试了所有方式的HTTP发布代码在Winform应用程序,但虽然WebApp默认。

这个包括:

  • 测试应用程序读取文件并张贴字符串。网页中的StreamReader在读取Request.InputStream.

  • 时产生一个空字符串。
  • WebClient。还是尝试。请求。

使用邮差和POST带参数的StreamReader场景工作。即。"opennode这是一个节点,closeode"产生一个xml字符串输出。

我应该提一下,我目前使用IDE来托管网页,以防这对行为有任何影响。

考虑到应用程序和站点之间自动传输的要求,解决这个问题的正确方法是什么?

我通常会提供一个web服务,但网站用户认为这是多余的,只是想用文件点击一个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 Client Receive'跟随

 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;
        }
    }

网页更改为来自Microsoft Webclient的示例代码。还是例子(下图)。行为没有改变。所以它一定是WinApp Tester。

<%@ 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>

将文件发送到Asp.net

问题有两个方面:webApp在IDE下看起来OK,给出了上面列出的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);
    }

现在一切正常。