2009-06-20 24 views
7

Łączę szybką usługę danych w WCF, aby uzyskać do niej dostęp za pomocą publicznej aplikacji Silverlight 2.0. Ponieważ moje dane są bardzo statyczne i stosunkowo proste, chciałbym po prostu przechowywać je w lokalnych plikach XML (co jest łatwiejsze, ponieważ istnieje bardzo ograniczona liczba osób, które kiedykolwiek będą je edytować).Względne ścieżki w usługach WCF hostowane w usługach IIS

Zastanawiam się, jaki będzie najlepszy sposób znalezienia względnej ścieżki z mojej usługi. W tradycyjnym ASP.NET mógłbym użyć Server.MapPath .... w ramach tej usługi WCF nic podobnego nie jest dostępne. To rozwiązanie będzie ostatecznie hostowane u dostawcy hostingu, nad którym nie mam kontroli, więc nie mogę zakodować na stałe żadnych lokalizacji. Wolałbym po prostu uzyskać względną ścieżkę do niektórych plików XML w moim folderze AppData.

Wszelkie sugestie?

Odpowiedz

11

mógłby spróbować użyć Environment.CurrentDirectory lub AppDomain.CurrentDomain.BaseDirectory

+4

AppDomain.CurrentDomain.BaseDirectory zwraca poprawną ścieżkę. Ale Environment.CurrentDirectory wydaje się zwracać pewną ścieżkę do folderu {program files}. Dzięki za pomoc. –

2

The usług WCF nadal mieć dostęp do wielu takich samych rzeczy jak swoich stronach ASP.NET (ponieważ w końcu nadal istnieje Żądanie HTTP i odpowiedź). Nadal możesz używać Server.MapPath w następujący sposób:

HttpContext.Current.Server.MapPath(...) 
+1

To zadziała tylko wtedy, gdy włączysz tryb zgodności ASP.NET i jeśli nie chcesz przenieść istniejącej usługi sieciowej ASMX do WCF, rzadko istnieje ku temu powód. –

0

Najpierw dodaj operację do usługi, aby zwrócić bieżący katalog. Niech nowa operacja po prostu zwróci Environment.CurrentDirectory. W kliencie sprawdź, czy jesteś zaskoczony tym, co jest katalogiem bieżącym. Dostosuj w razie potrzeby.

1

Można przechowywać pliki w folderze IsolatedStorage zamiast w folderze aplikacji. Sprawdź przykład na połączonej stronie, aby zobaczyć, jak to działa.

Powiązane problemy