Frage

Zur Zeit habe ich eine Anwendung, die eine hochgeladene Datei von meiner Web-Anwendung empfängt. Ich brauche jetzt die Datei auf einen Dateiserver zu übertragen, die sich im selben Netzwerk befindet sich zufällig (jedoch könnte dies nicht immer der Fall sein).

Ich habe versucht, die WebClient-Klasse in C # .NET zu verwenden.

    string filePath = "C:\\test\\564.flv";
    try
    {
        WebClient client = new WebClient();

        NetworkCredential nc = new NetworkCredential(uName, password);

        Uri addy = new Uri("\\\\192.168.1.28\\Files\\test.flv");
        client.Credentials = nc;
        byte[] arrReturn = client.UploadFile(addy, filePath);
        Console.WriteLine(arrReturn.ToString());
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

Die Maschine bei 192.168.1.28 befindet ist ein Dateiserver und hat einen Anteil c: \ Files. Ab jetzt erhalte ich einen Fehler der Anmelde schlechten Benutzername oder das Passwort ist fehlgeschlagen, aber ich kann erfolgreich in diesem Pfad Login-Explorer und Art öffnen. Ich kann auch anmelden Remote-Desktop verwenden, damit ich weiß, das Benutzerkonto funktioniert.

Alle Ideen zu diesem Fehler? Ist es möglich, eine Datei direkt so zu übertragen? Mit der WebClient-Klasse oder vielleicht eine andere Klasse?

War es hilfreich?

Lösung

Verwenden Sie einfach

File.Copy(filepath, "\\\\192.168.1.28\\Files");

Ein Fenster über einen UNC-Pfad ausgesetzt Dateifreigabe wird als Teil des Dateisystems behandelt, und hat nichts mit dem Internet zu tun.

Die Anmeldeinformationen verwendet werden, dass der Arbeitsprozess von ASP.NET sein, oder jede mögliche Personifizierung Sie aktiviert haben. Wenn Sie diejenigen zwicken können, um es richtig zu machen, kann dies geschehen.

Sie können auf Probleme stoßen, weil Sie die IP-Adresse anstelle des Servernamens verwenden (Fenster Beglaubigungseinstellungen verhindern, dass die Domain verlassen - von IP verwenden Sie Domain Details verstecken). Wenn möglich, verwenden Sie die Servernamen!

Wenn dies nicht auf der gleichen Windows-Domäne ist, und Sie versuchen, ein anderes Domain-Konto zu verwenden, müssen Sie die Benutzername wie „[domain_or_machine] \ [Benutzername]“ angeben

Wenn Sie explizite Anmeldeinformationen angeben müssen, werden Sie in suchen müssen einen Identitätswechsel Codierung Lösung .

Andere Tipps

namespace FileUpload
{
public partial class Form1 : Form
{
    string fileName = "";
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        string path = "";
        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Attach customer proposal document";
        fDialog.Filter = "Doc Files|*.doc|Docx File|*.docx|PDF doc|*.pdf";
        fDialog.InitialDirectory = @"C:\";
        if (fDialog.ShowDialog() == DialogResult.OK)
        {
            fileName = System.IO.Path.GetFileName(fDialog.FileName);
            path = Path.GetDirectoryName(fDialog.FileName);
            textBox1.Text = path + "\\" + fileName;

        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            WebClient client = new WebClient();

            NetworkCredential nc = new NetworkCredential("erandika1986", "123");

            Uri addy = new Uri(@"\\192.168.2.4\UploadDocs\"+fileName);

            client.Credentials = nc;
            byte[] arrReturn = client.UploadFile(addy, textBox1.Text);
            MessageBox.Show(arrReturn.ToString());

        }
        catch (Exception ex1)
        {
            MessageBox.Show(ex1.Message);
        }
    }
}
}

Wenn Sie manuell die IP-Adresse öffnen (über den RUN-Befehl oder ein Netzlaufwerk zuordnen), Ihr PC wird Ihre Anmeldeinformationen über das Rohr und der Dateiserver Genehmigung der DC erhalten senden.

Wenn ASP.Net versucht, dann wird es versuchen, den IIS-Arbeits Benutzer zu verwenden (es sei denn, Identitätswechsel, auf dem gedreht wird, wird ein paar andere Themen aufgeführt). Traditionell wird der IIS-Arbeits Benutzer keine Berechtigung haben, über mehrere Server zu arbeiten (oder auch in anderen Ordnern auf dem Webserver).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top