Vraag : Fout: Het proces kan niet tot het dossier toegang hebben omdat het door een ander proces wordt gebruikt.

hallo,

I am gebruikend klasse „FtpWebRequest“ om een dossier aan een verre server te uploaden. De onderstaande code haalt het Upload proces aan en schrapt dan het dossier nadat het wordt geupload. Ik heb ook de code vastgemaakt dat asynchroon een dossier uploadt. Het dossier krijgt geuploade boete maar wanneer het aan het schrappen van het dossier krijgt het de uitzondering „werpt Er was een probleem schrappend het binnen gevestigde dossier {0} {1}. Het proces kan niet tot het dossier toegang hebben omdat het door een ander proces“ wordt gebruikt.
I denkt mijn code probeert om het dossier te schrappen nadat het wordt geupload. Kan om het even wie me waar het alstublieft laten weten verkeerd gaat? Dank status you.

bool = AsynchronousFtpUpLoader.Upload (ipaddr, fileName, gebruiker, DOW);

als (status)
{
try
{
als (File.Exists (fileName))
{
File.Delete (fileName);
}
else
{
MessageBox.Show (koord. Format (het „Dossier {0} bestaat niet in de plaats {1}. “, Path.GetFileName (fileName) , Path.GetDirectoryName (fileName))); /> vangst
}

}
{
MessageBox.Show (koord. Format („There was een probleem schrappend het binnen gevestigde dossier {0} {1}. \ r \ n \ r \ n {2}“, Path.GetFileName (fileName) , Path.GetDirectoryName (fileName), x.Message));
}
}


" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
using Systeem;
het gebruiken van System.Collections.Generic;
het gebruiken van System.Linq;
het gebruiken van System.Text;
het gebruiken van System.Net;
het gebruiken van System.Threading;
het gebruiken van System.IO;
het gebruiken van System.Windows.Forms;

namespace FTPProcess
{
    klasse FtpState
    {
        privé ManualResetEvent wacht;
        privé verzoek FtpWebRequest;
        privé koordfileName;
        privé operationException van de Uitzondering = verklaart nietig;
        koord status;

        openbare FtpState ()
        {
            wachttijd = nieuwe (valse) ManualResetEvent;
        }

        openbare ManualResetEvent OperationComplete
        {
            krijg {de terugkeer wacht; }
        }

        openbaar Verzoek FtpWebRequest
        {
            krijg {terugkeerverzoek; }
            plaats {verzoek = waarde; }
        }

        openbare koordFileName
        {
            krijg {terugkeerfileName; }
            plaats {fileName = waarde; }
        }
        openbare Uitzondering OperationException
        {
            krijg {terugkeeroperationException; }
            plaats {operationException = waarde; }
        }
        openbaar koord StatusDescription
        {
            krijg {terugkeerstatus; }
            plaats {status = waarde; }
        }
    }

    openbare klasse AsynchronousFtpUpLoader
    {
        openbare statische bool uploadt (koord uploadUrl, koordfileName, koordgebruikersbenaming, koordDOW)
        {
            ManualResetEvent waitObject;

            probeer
            {
                koord uri = koord. Formaat („ftp:// {0}/{1}“, uploadUrl, Path.GetFileName (fileName));

                De staat van FtpState = nieuwe FtpState ();
                Het verzoek van FtpWebRequest = (FtpWebRequest) WebRequest.Create (uri);
                verzoek. Methode = WebRequestMethods.Ftp.UploadFile;
                request.EnableSsl = vals;

                verzoek. Geloofsbrieven = nieuwe NetworkCredential (gebruikersbenaming, DOW);
                staat. Verzoek = verzoek;
                state.FileName = fileName;

                waitObject = state.OperationComplete;
                request.BeginGetRequestStream (nieuwe AsyncCallback (EndGetStreamCallback), staat);
                waitObject.WaitOne ();

                als (state.OperationException! = verklaar) nietig
                {
                    werp state.OperationException;
                }

                keer waar terug;
            }
            vangst (Uitzondering x)
            {
                MessageBox.Show (koord. Formaat („Fout terwijl het uploaden van het dossier {0}. \ r \ n {1}“, fileName, x.Message));
                valse terugkeer;
            }

        }

        privé statische nietige EndGetStreamCallback (IAsyncResult AR)
        {
            De staat van FtpState = (FtpState) ar.AsyncState;

            De stroom requestStream = verklaart nietig;
            // Eind de asynchrone vraag om de verzoekstroom te krijgen.
            probeer
            {
                requestStream = staat. Request.EndGetRequestStream (AR);
                // Exemplaar de dossierinhoud aan de verzoekstroom.
                const int. bufferLength = 2048;
                byte [] buffer = nieuwe byte [bufferLength];
                int. readBytes = 0;
                De stroom van FileStream = File.OpenRead (state.FileName);
                
                {
                    readBytes = stroom. Lees (buffer, 0, bufferLength);
                    requestStream.Write (buffer, 0, readBytes);
                }
                terwijl (readBytes! = 0);
                requestStream.Close ();
                // wordt asynchroon de reactie op uploadt verzoek.
                staat. Request.BeginGetResponse (
                    nieuwe AsyncCallback (EndGetResponseCallback),
                    staat
                );
            }
            // de uitzonderingen van de Terugkeer op de belangrijkste toepassingsdraad.
            vangst (Uitzondering e)
            {
                MessageBox.Show („kon niet de verzoekstroom krijgen. “);
                state.OperationException = e;
                state.OperationComplete.Set ();
                terugkeer;
            }
        }

        // de methode EndGetResponseCallback  
        // voltooit een vraag aan BeginGetResponse.
        privé statische nietige EndGetResponseCallback (IAsyncResult AR)
        {
            De staat van FtpState = (FtpState) ar.AsyncState;
            De reactie van FtpWebResponse = verklaart nietig;
            probeer
            {
                de reactie = (FtpWebResponse) verklaart. Request.EndGetResponse (AR);
                reactie. Sluit ();
                state.StatusDescription = response.StatusDescription;
                // Signaal de belangrijkste toepassingsdraad dat 
                // de verrichting volledig is.
                state.OperationComplete.Set ();
            }
            // de uitzonderingen van de Terugkeer op de belangrijkste toepassingsdraad.
            vangst (Uitzondering e)
            {
                MessageBox.Show („Fout die reactie krijgen. “);
                state.OperationException = e;
                state.OperationComplete.Set ();
            }
        }
    }
}

Antwoord : Fout: Het proces kan niet tot het dossier toegang hebben omdat het door een ander proces wordt gebruikt.

Aangezien u het waarschijnlijkst de geen adressen van het SLOKJE met domain.local namespace zult toewijzen zult u slechts het domain.com SLOKJE moeten steunen namespace.  En aangezien er geen vermelding van een server is van de Rand die ik u plant een intern-enige die plaatsing met CWA zal veronderstellen gepubliceerd=wordt= aan Internet voor op browser-gebaseerde cliënttoegang voor externe gebruikers toe te staan.  Aldus, hier is een algemeen overzicht van het minimumaantal componenten u zou vereisen:

1. Één enkel SSL San- certificaat voor de Standaardserver van de Uitgave met de Gemeenschappelijke Naam plaatste aan FQDN van de server (b.v. ocsserver1.domain.local) en één enkele ingang van San van „sip.domain.com“.

2. Één enkel SSL San- certificaat voor de server van de Toegang van het Web (CWA) van de Informatieverspreider. Zie deze draad voor meer details bij het gebruiken van één enkel certificaat voor zowel gebruik MTLS als IIS op de server CWA:
http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=75

De zelf-ondertekende certificaten kunnen niet voor OCS worden gebruikt en zullen niet werken.
Andere oplossingen  
 
programming4us programming4us