Ik heb een remoted object dat in IIS gehost is. Dat object voert een aantal taken uit op een andere thread.
Eén van die taken is het uploaden van een file naar een Sharepoint Server. Om dit te kunnen bewerkstelligen, heb ik credentials nodig. Deze kan ik verkrijgen door gebruik te maken van
Echter, aangezien dat dit in een andere thread gebeurt, lukt dit niet. Als ik een nieuwe thread start in een asp.net applicatie (want dat is het nu in feite, aangezien m'n component in IIS gehost is), krijgt die thread niet dezelfde security context als de 'main thread'.
Als ik dus in die thread de credentials doorgeef, krijg ik altijd een '401 unauthorized' error.
Als ik die upload in de 'main' thread uitvoer, dan werkt het wel goed. Ik heb ook al geprobeerd om in de main thread de credentials op te vragen, en deze dan te gebruiken in die andere thread:
Echter, dit blijft een 401 unauthorized geven. Iemand enige logische verklaring waarom bovenstaande niet werkt, en, iemand een idee hoe ik dit zou kunnen oplossen ?
Die upload uit die andere thread halen, is geen optie.
Eén van die taken is het uploaden van een file naar een Sharepoint Server. Om dit te kunnen bewerkstelligen, heb ik credentials nodig. Deze kan ik verkrijgen door gebruik te maken van
code:
1
| CredentialCache.DefaultCredentials |
Echter, aangezien dat dit in een andere thread gebeurt, lukt dit niet. Als ik een nieuwe thread start in een asp.net applicatie (want dat is het nu in feite, aangezien m'n component in IIS gehost is), krijgt die thread niet dezelfde security context als de 'main thread'.
Als ik dus in die thread de credentials doorgeef, krijg ik altijd een '401 unauthorized' error.
Als ik die upload in de 'main' thread uitvoer, dan werkt het wel goed. Ik heb ook al geprobeerd om in de main thread de credentials op te vragen, en deze dan te gebruiken in die andere thread:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| private ICredentials _cred;
public void StartTask()
{
_cred = CredentialCache.DefaultCredentials;
Thread t = new Thread (new ThreadStart (PerformAllSteps));
t.Start();
}
private void PerformAllSteps()
{
foreach( IStep s in tasks )
{
s.Execute (_cred);
}
} |
Echter, dit blijft een 401 unauthorized geven. Iemand enige logische verklaring waarom bovenstaande niet werkt, en, iemand een idee hoe ik dit zou kunnen oplossen ?
Die upload uit die andere thread halen, is geen optie.
https://fgheysels.github.io/