C# 将二进制文件另存为文件

C# 将二进制文件另存为文件,c#,asp.net-mvc,file-upload,http-post,C#,Asp.net Mvc,File Upload,Http Post,如何将二进制字符串保存为文件?我正在发布Excel中的二进制字符串。以下是代码: Sub PostFileAsBinary() Dim Filename As String Filename = "\\Network Drive\Test File\TestFile.pdf" FileURL = "http://localhost:11212/Upload/BinaryFile/" Dim ReadFile As String Dim n As Integer n = FreeFile()

如何将二进制字符串保存为文件?我正在发布Excel中的二进制字符串。以下是代码:

Sub PostFileAsBinary()

Dim Filename  As String
Filename = "\\Network Drive\Test File\TestFile.pdf"
FileURL = "http://localhost:11212/Upload/BinaryFile/"

Dim ReadFile As String
Dim n As Integer
n = FreeFile()

Open Filename For Binary As n
ReadFile = String(LOF(n), vbNullChar)
Get n, , ReadFile
Close n
Debug.Print ReadFile

Set httpReq = New MSXML2.XMLHTTP
httpReq.Open "POST", FileURL & "?ID= " & 2, False
httpReq.SetRequestHeader "Content-Length", Len(ReadFile)
httpReq.send ReadFile

Debug.Print httpReq.responseText
ReadFile = ""
Set httpReq = Nothing

End Sub
以下是我的控制器操作:

        [HttpPost]
    public ActionResult PostLPFile(int LPKey, string ReadFile)

    {
        using (FileStream srReadFile = new FileStream(@"D:\Temp", FileMode.Create))

        {
            using (BinaryWriter writer = new BinaryWriter(srReadFile))
            {
                writer.Write(ReadFile);

                writer.Close();
            }
        }
        return View();
我已成功发布二进制文件,但无法在所述位置上载文件:
\\Network Drive\Posted file


我想我必须转换发布到stream的二进制字符串,我想我正在努力解决这个问题。有人可以查看它并提供帮助吗?

在ASP.Net中访问目录位置的安全性取决于web应用程序中如何实现安全性:

如果您模拟的是最终用户或特定用户,则需要该用户访问目录位置

如果未使用模拟,则需要访问目录的是网站运行所在的应用程序池的用户标识

更新


有关ASP.Net中模拟的更多信息,请参阅。

@user793468,您是否尝试在本地编写它?请在UNC地址之前先尝试此操作,并确保这不是IIS向其他域执行写操作时的问题。(@squillman,我的坏)@one这其实不是我的问题,我只是稍微整理了一下。@one.beat.consumer我在本地有它:FileURL=“”@user793468,“但无法上传”没有用。请提供详细信息(异常类型+消息)。还可以尝试在本地保存(如建议的),即保存到临时文件夹,以避免所有权限问题。@AlexeiLevenkov我将其更改为“D:\temp”,并获得错误:对路径“D:\temp”的访问被拒绝。我确实可以访问该文件夹,为什么会出现此错误?我不是冒充任何人,我是以自己的身份登录的。有没有办法以管理员身份进行模拟?@user793468:我所说的模拟是指ASP.Net请求以管理员身份执行的用户上下文。我更新了答案,添加了指向MSDN文档的链接,该文档提供了该主题的全面概述。我认为最简单的方法是将IIS应用程序池用户修改为有权访问该网络共享的域用户。@user793468,competent_tech是正确的。。。IIS正在以某人的身份运行您的web应用程序,无论它是内置帐户(如System)、NetworkService、AppPoolIdentity还是其他自定义帐户,我们都不知道。。。问题是,运行应用程序所使用的任何帐户都是您用来编写文件的帐户。此外,使用诸如WindowsAuth或模拟之类的身份验证模式将导致代表已验证用户的帐户进行访问,因此他们需要特权。最后,域外文件操作更为棘手,因为它们离开服务器…继续。。。首先确定本地存储上的权限问题。。。一旦解决了这个问题,就开始研究使用UNC地址来进行文件共享-domain@one.beat.consumer我解决了访问问题。我遇到的下一个问题是无法将发布的数据从“ReadFile”保存到控制器操作中的变量。我知道有一种方法可以将发布的文本分配给控制器操作中的变量,但不知道具体如何分配