2017-02-24 2 views
1

Ich habe eine Visual Studio-Lösung, die mehrere Projekte enthält, darunter ein Dienstprojekt (Geschäftslogik) und ein MVC-UI-Projekt (Präsentation).Zugriff auf eine JSON-Datei in einer n-Tier-MVC-Anwendung VS2015

Innerhalb des Dienstprojekts habe ich eine JSON-Datei, auf die ich in einer der Dienstprojektklassen zugreifen muss.

Das Problem, das ich habe ist, dass fast alles, was ich zurückkehrt, einen Weg zu dem UI-Projekt versuchen (nicht, wo die JSON-Datei ist)

Dinge, die ich versucht habe:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geo.json"); 
//returns a path contained within UI project 

HttpContext.Current.Server.MapPath("~/geo.json"); 
// also returns a path contained within UI project 

Environment.CurrentDirectory; 
// returns C:\\Program Files (x86)\\IIS Express 

Wie kann ich die Pfad zu einer JSON-Datei, die nicht im UI-Projekt enthalten ist?

+0

Welche Art von Projekt ist das "Service-Projekt"? Ist es eine Klassenbibliothek (eine .dll)? –

+0

Es ist eine Klassenbibliothek. – user3626232

+0

Ihr JSON für Ihre Klassenbibliothek wird schließlich bei der Bereitstellung in der Ordnerstruktur Ihrer Benutzeroberfläche (wahrscheinlich im Ordner "bin") landen. Sie müssen mit der rechten Maustaste auf die JSON-Datei in Ihrer Klassenbibliothek klicken, "Eigenschaften" auswählen und das "In Ausgabeverzeichnis kopieren" in eine der Kopieroptionen ändern. –

Antwort

0

Da das "Dienstprojekt" eine Klassenbibliothek ist, können Sie relativ zum Pfad der Klassenbibliothek nichts wirklich tun.

Die Klassenbibliothek wird zur Kompilierungszeit in eine .dll-Datei umgewandelt und in den Ordner bin des Projekts kopiert, das darauf verweist (auch zur Kompilierzeit).

Wenn also der Code im Serviceprojekt fragt, von wo er ausgeführt wird, gibt er den Speicherort des Codes zurück, der darauf verweist, da die .dll-Datei dort endet.

Ich hoffe, dass dies eine Menge Sinn macht. Es wäre viel einfacher zu erklären, ob ich Handpuppen benutzen könnte, aber Markdown unterstützt derzeit nicht die Verwendung von lustigen Requisiten.

Wie Frank im obigen Kommentar erwähnt, können Sie anderen Dateien im Serviceprojekt mitteilen, dass sie auch in den Ordner bin kopiert werden sollen, indem Sie die Eigenschaften der Datei auswählen und "In Ausgabeverzeichnis kopieren" wählen. Wenn Sie dies mit Ihrer geo.json-Datei tun, wird es im Ordner bin enden.

Alternativ können Sie innerhalb der MVC-App den Pfad der Datei geo.json in die Methode .dll als Parameter übergeben. Auf diese Weise muss der Anrufer wissen, wo die Informationen gespeichert sind.

+0

(Denken Sie daran, ich frage als Junior-Entwickler) Gibt es eine andere Art von Projekt, das ich verwenden sollte, um meine Geschäftslogik unter Berücksichtigung dieses Szenarios zu umfassen? – user3626232

+0

ok .. versuchen, genug Details zu setzen, um nützlich zu sein. Lassen Sie mich jeden Jargon wissen, der unklar ist. –

+0

Danke dafür, es macht jetzt Sinn, ich bin noch nie auf diese Situation gestoßen. Ich nehme an, es könnte besser sein, das JSON über ein Webapi verfügbar zu machen, anstatt es ständig im bin-Ordner zu aktualisieren/darauf zuzugreifen? – user3626232

Verwandte Themen