gpt4 book ai didi

c# - 将文件发送到 Asp.net

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:38 25 4
gpt4 key购买 nike

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

没有 UI 参与。

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

我已经在 Winform 应用程序中尝试了各种 HTTP 发布代码,但尽管 WebApp default.aspx 被命中,但我无法获取有效负载。

这包括:

  • 测试应用读取文件并发布字符串。网页中的 StreamReader 在读取 Request.InputStream 时产生一个空字符串。

  • WebClient.UpLoadFile 尝试。 Request.Files 集合为空。

使用 Postman 和带有参数的 POST,StreamReader 场景可以工作。 IE。文件主体:“opennode This is a node closenode”产生一个 xml 字符串输出。

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

鉴于应用程序和网站之间自动传输的要求,解决此问题的正确方法是什么?

我通常会提供一个 Web 服务,但网站用户认为这太过分了,只想访问包含该文件的 URL。

WebClient Attempt 的应用程序代码如下。

 private void OpenFile(string _file)
{

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


}

ASP.NET 代码“Web 客户端接收”如下

 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.UploadFile 示例(如下)的示例代码。行为无变化。所以它一定是 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>

最佳答案

问题有两个: WebApp 在 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);
}

现在一切正常。

关于c# - 将文件发送到 Asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com