Frage : Störung: Der Prozess kann auf die Akte nicht zurückgreifen, weil er durch einen anderen Prozess verwendet wird.

hallo,

I morgens using „FtpWebRequest“ die Kategorie, zum einer Akte zu einem Fernbediener zu laden. Der below Code hervorruft den Antriebskraftprozeß ruft und löscht dann die Akte, nachdem er geladen. Ich angebracht auch den Code h, das asynchron eine Akte laden. Die Akte erhält fein geladen, aber, wenn es an das Löschen der Akte gelangt, wirft sie die Ausnahme „dort war ein Problem, welches die Akte {0} innen löscht gelegen {1}. Der Prozess kann auf die Akte nicht zurückgreifen, weil er durch einen anderen Prozess“ verwendet.
I denken meine Codeversuche, um die Akte zu löschen, nachdem es geladen. Kann jedes mich bitte informieren, wohin es falsch geht? You.

bool Status = AsynchronousFtpUpLoader.Upload (ipaddr, Dateiname, Benutzer, pwd) danken;

, wenn (Status)
{
try
{
, wenn (File.Exists (Dateiname))
{
File.Delete (Dateiname);
}
else
{
MessageBox.Show (Schnur. Format („die Akte {0} existiert nicht in der Position {1}. “, Path.GetFileName (Dateiname) , Path.GetDirectoryName (fileName)));
}

}
Fang (Ausnahme x)
{
MessageBox.Show (Schnur. Format („There war ein Problem, welches die Akte {0} innen löscht gelegen {1}. \ r \ n \ r \ n {2}“, Path.GetFileName (Dateiname) , Path.GetDirectoryName (fileName), x.Message));
}
}


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:
6:
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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Threading;
using System.IO;
using System.Windows.Forms;

namespace FTPProcess
{
    Kategorie FtpState
    {
        private ManualResetEvent Wartezeit;
        privater FtpWebRequest Antrag;
        privater Schnurdateiname;
        privates AusnahmeoperationException = -null;
        Schnurstatus;

        allgemeines FtpState ()
        {
            Wartezeit = neues ManualResetEvent (falsch);
        }

        allgemeines ManualResetEvent OperationComplete
        {
            erhalten {Rückholwartezeit; }
        }

        allgemeiner FtpWebRequest Antrag
        {
            erhalten {Rückholantrag; }
            einstellen {Antrag = Wert; }
        }

        allgemeiner Schnur Dateiname
        {
            erhalten {Rückholdateiname; }
            einstellen {Dateiname = Wert; }
        }
        allgemeine Ausnahme OperationException
        {
            erhalten {RückholoperationException; }
            einstellen {operationException = Wert; }
        }
        allgemeine Schnur StatusDescription
        {
            erhalten {Rückholstatus; }
            einstellen {Status = Wert; }
        }
    }

    allgemeine Kategorie AsynchronousFtpUpLoader
    {
        allgemeine statische bool Antriebskraft (Schnur uploadUrl, Schnurdateiname, Schnurusername, Schnur pwd)
        {
            ManualResetEvent waitObject;

            Versuch
            {
                Schnur uri = Schnur. Format („ftp:// {0}/{1}“, uploadUrl, Path.GetFileName (Dateiname));

                FtpState Zustand = neues FtpState ();
                FtpWebRequest Antrag = (FtpWebRequest) WebRequest.Create (uri);
                Antrag. Methode = WebRequestMethods.Ftp.UploadFile;
                request.EnableSsl = falsch;

                Antrag. Bescheinigungen = neues NetworkCredential (username, pwd);
                Zustand. Antrag = Antrag;
                state.FileName = Dateiname;

                waitObject = state.OperationComplete;
                request.BeginGetRequestStream (neues AsyncCallback (EndGetStreamCallback), Zustand);
                waitObject.WaitOne ();

                wenn (state.OperationException! = Null)
                {
                    Wurf state.OperationException;
                }

                Rückhol ausrichten;
            }
            verfangen (Ausnahme x)
            {
                MessageBox.Show (Schnur. Format („Störung beim Laden der Akte {0}. \ r \ n {1}“, Dateiname, x.Message));
                Rückholfalsches;
            }

        }

        privates statisches leeres EndGetStreamCallback (IAsyncResult AR)
        {
            FtpState Zustand = (FtpState) ar.AsyncState;

            StromrequestStream = -null;
            //-Ende der asynchrone Anruf, zum des Antragstromes zu erhalten.
            Versuch
            {
                requestStream = Zustand. Request.EndGetRequestStream (AR);
                //-Kopie, welche die Akte zum Antragstrom zufriedenstellt.
                const int bufferLength = 2048;
                Puffer des Bytes [] = neues Byte [bufferLength];
                int readBytes = 0;
                FileStream Strom = File.OpenRead (state.FileName);
                tun
                {
                    readBytes = Strom. Gelesen (Puffer, 0, bufferLength);
                    requestStream.Write (Puffer, 0, readBytes);
                }
                während (readBytes! = 0);
                requestStream.Close ();
                // erhalten asynchron die Antwort zum Antriebskraftantrag.
                Zustand. Request.BeginGetResponse (
                    neues AsyncCallback (EndGetResponseCallback),
                    Zustand
                );
            }
            //-Rückholausnahmen der Hauptanwendung verlegen.
            Fang (Ausnahme e)
            {
                MessageBox.Show („könnte den Antrag stream.") nicht erhalten;
                state.OperationException = e;
                state.OperationComplete.Set ();
                Rückkehr;
            }
        }

        // die EndGetResponseCallback Methode  
        // abschließt einen Anruf zu BeginGetResponse.
        privates statisches leeres EndGetResponseCallback (IAsyncResult AR)
        {
            FtpState Zustand = (FtpState) ar.AsyncState;
            FtpWebResponse Antwort = Null;
            Versuch
            {
                Antwort = (FtpWebResponse) Zustand. Request.EndGetResponse (AR);
                Antwort. Abschluss ();
                state.StatusDescription = response.StatusDescription;
                //-Signal das Hauptanwendungsgewinde das 
                // der Betrieb ist komplett.
                state.OperationComplete.Set ();
            }
            //-Rückholausnahmen der Hauptanwendung verlegen.
            Fang (Ausnahme e)
            {
                MessageBox.Show („Störung, die response.") erhält;
                state.OperationException = e;
                state.OperationComplete.Set ();
            }
        }
    }
}

Antwort : Störung: Der Prozess kann auf die Akte nicht zurückgreifen, weil er durch einen anderen Prozess verwendet wird.

Da Sie höchstwahrscheinlich nicht SCHLÜCKCHEN-Adressen mit dem domain.local namespace zuweisen, müssen Sie nur das domain.com-SCHLÜCKCHENnamespace stützen.  Und da es keine Erwähnung eines Randbedieners gibt, annehme ich h, dass Sie eine interne-nur Entwicklung mit CWA planen, das zum Internet veröffentlicht, um Browser-gegründeten Klientenzugang für externe Benutzer zuzulassen.  So ist hier ein allgemeiner Überblick über die Mindestzahl der Bestandteile, die Sie fordern:

1. Eine einzelne Bescheinigung SSL-San für den Standardausgabenbediener mit dem allgemeinen Namen einstellte auf FQDN des Bedieners (z.B. ocsserver1.domain.local) und eine einzelne San-Eintragung von „sip.domain.com“.

2. Eine einzelne Bescheinigung SSL-San für den Mitteilend-Netz-Zugangs (CWA)bediener. Dieses Gewinde für weitere Einzelheiten über die Anwendung einer einzelnen Bescheinigung für MTLS und IIS Verbrauch auf dem CWA Bediener sehen:
http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=75

Selbst-unterzeichnete Bescheinigungen können nicht für OCS benutzt werden und arbeiten nicht.
Weitere Lösungen  
 
programming4us programming4us