Ich habe eine ASP.NET-Webanwendung, die versucht, die CreateRepository-Methode in SharpSvn auszuführen, so dass neue Repos über eine Webschnittstelle bereitgestellt werden können. Alles läuft gut, wenn die App von Visual Studio aus ausgeführt wird, da sie unter meiner eigenen Identität läuft, die Rechte auf die VisualSVN-Serverinstanz hat, die auf meinem lokalen Rechner läuft. Wenn ich die Anwendung jedoch unter IIS auf meinem lokalen XP-Rechner ausführe, wird der asp.net Worker-Prozess unter dem lokalen aspnet-Konto ausgeführt, dem ich scheinbar nicht die Rechte zum Erstellen von Repositories erteilen kann. Egal, wie weit ich die Rechte erweitere (sogar in die lokalen Admin- oder VisualSVN-Administratorgruppen), SharpSvn löst ständig eine SvnAuthorizationException aus und ich erhalte einen entsprechenden Eintrag im Sicherheitsereignisprotokoll unter dem aspnet-Konto.
Der Code läuft folgendermaßen ab:
string repoPath = string.Format("{0}{1}", repoFolderPath, repoName);
using (var svnRepoClient = new SvnRepositoryClient())
{
svnRepoClient.LoadConfiguration(repoPath);
svnRepoClient.CreateRepository(repoPath);
}
Das Ergebnis ist dieser Stack-Trace:
[SvnAuthorizationException: Can't Verzeichnis erstellen ' E:\Repositories\TestRepoName ': Der Zugriff wird verweigert. ]
[SvnAuthorizationException: Konnte nicht Top-Level-Verzeichnis erstellen]
[SvnAuthorizationException: Repository Erstellung fehlgeschlagen]
SharpSvn.SvnClientArgs.HandleResult(SvnClientContext client, SvnException error) +165
SharpSvn.SvnClientArgs.HandleResult(SvnClientContext client, svn_error_t* error) +80
SharpSvn.SvnRepositoryClient.CreateRepository(String repositoryPath, SvnCreateRepositoryArgs args) +828
SharpSvn.SvnRepositoryClient.CreateRepository(String repositoryPath) +53
RepoManager.DataAccess.RepoDataAccess.CreateRepo(String repoName, String projectName, Mitarbeiter creatorEmployee) +183
RepoManager.Web.Default.SubmitButton_Click(Object sender, EventArgs e) +357
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
Es sieht so aus, als ob eine Alternative darin besteht, die web.config so zu konfigurieren, dass sie ein anderes Konto verkörpert (z. B. ein Konto auf Domänenebene), aber das scheint sehr umständlich zu sein, wenn ich nur dem aspnet-Konto die entsprechenden Rechte gewähren möchte.
Hat jemand einen Vorschlag, wie man das machen kann? Was hat es mit der Konfiguration des Aspnet-Kontos auf sich, dass es scheinbar unmöglich ist, diese Rechte zu gewähren?
Ich bin nicht sicher, ob dies durch die App-Pool-Identität angegangen werden kann, wenn dies auf einen Produktionsserver geht, aber es immer noch nicht die Probleme lokal unter IIS laufen.
1 Stimmen
Wenn Sie den Stack-Trace posten (und vielleicht etwas Code zu dem, was Sie zu tun versuchen), haben Sie eine bessere Chance auf eine Antwort.