'Der relative virtuelle Pfad der Anwendung' ~ / 'ist hier nicht erlaubt' im Komponententest auf dem 2K3 Build-Server, aber nicht auf XP / Vista-Dev-Maschinen

8

Ich spotte HttpRequestBase, damit ich einen HtmlHelper im Testcode erstellen und Tests um HtmlHelper-Erweiterungsmethoden schreiben kann. Ich mache das als Teil des Setup-Codes:

%Vor%

was auf zwei Dev-Rechnern (einer mit XP, einer mit Vista 64-Bit) funktioniert. Auf einem Windows Server 2003-Buildcomputer schlägt der Test jedoch fehl, wenn ich RouteLink () auf dem HtmlHelper wie folgt aufruft:

System.ArgumentException: Der relative virtuelle Pfad der Anwendung '~ /' ist hier nicht erlaubt. bei System.Web.VirtualPath.Create (String virtualPath, VirtualPathOptions-Optionen)

In beiden Fällen verwende ich NUnit 2.4.8 und die NUnit GUI als Test-Runner. Alles andere ist identisch mit Ausnahme des Betriebssystems, soweit ich das beurteilen kann: dieselbe Version von RhinoMocks (3.5), dieselbe Version von ASP.NET MVC (RTM). Ich habe versucht, die Binaries gegenüber einer Dev-Maschine zu kopieren, anstatt die auf der Erstellungsmaschine zu verwenden, und das macht keinen Unterschied.

Wenn ich die erste Zeile im Setup-Code zu dieser ändern:

%Vor%

Der Test wird auf allen Maschinen ausgeführt.

Irgendeine Idee warum?

    
alexis.kennedy 13.04.2009, 19:58
quelle

2 Antworten

10

"~ /" ist kein gültiger Wert für ApplicationPath. Der springende Punkt der "~ /" -Syntax ist, dass Sie URLs angeben können, die relativ zu ApplicationPath sind.

Für eine verwurzelte Site sollte der Wert "/" sein. Für Sites in virtuellen Verzeichnissen sollte es einen Wert wie "/ mysite" geben.

    
Brad Wilson 16.04.2009 17:41
quelle
3

Die Eigenschaft HttpRuntime.AppDomainAppVirtualPath funktioniert in beiden Situationen. Es gibt "~ /" für Websites zurück, gibt aber in Komponententests null zurück, sodass sie nicht unterbrochen werden.

Quelle: Ссылка

    
Andy 12.06.2012 19:35
quelle

Tags und Links