2011-07-22 14 views
5

Mam SharePoint 2010 (na przykład: _http: // sp2010 /). Utworzyłem witrynę (_http: // sp2010/site /) i usługę WCF, która jest hostowana w folderze ISAPI. W służbie mam takiej metody badawczej:Wrong SPContext w usłudze Wcf

[OperationContract] 
public string GetCurrentWebUrl() 
{ 
    return SPContext.Current.Site.Url + " | " + SPContext.Current.Web.Url; 
} 

nazywam usługi z mojej aplikacji konsoli przy użyciu tego adresu - _HTTP: //sp2010/site/_vti_bin/WcfService.svc/mex. Podczas wywoływania metody GetCurrentWebUrl oczekuję uzyskać _http: // sp2010/site /, ale zawsze otrzymuję _http: // sp2010 /. Innymi słowy, SPContext nie jest poprawny.

Co robię źle? Jak mogę uzyskać odpowiedni kontekst?

Odpowiedz

1

Czy możesz dwukrotnie sprawdzić, czy naprawdę dzwonisz pod numer http://sp2010/site/_vti_bin/WcfService.svc/mex? Podczas korzystania z okna dialogowego Visual Studio Add Service Reference, zwykle używa on katalogu głównego, tak jak w przypadku http://sp2010/_vti_bin/WcfService.svc/mex.

Jeśli ustawienie go w kodzie powinna ona rzeczywiście działa, przynajmniej nie dla mnie :(

Co jest SPContext.Current.Web.Url i Web.ID? Czy pasujących do katalogu/strona/Web?

+0

To punkt , 'SPContext.Current.Web.Url = http: // sp2010 /'. Mam inną witrynę: 'http: // sp2010/site2 /'. Próbowałem z tą, ale znowu 'SPContext.Current.Web.Url = http: // sp2010/' – Grant

+0

@Grant i jesteś w 100% pewny, że trafiasz _vti_bin we właściwej podstronie, a nie w katalogu głównym? Użyj skrzypka, aby sprawdzić, czy rzeczywiście trafiłeś w adres URL, który chcesz uderzyć: http://www.fiddler2.com/fiddler2/ –

+0

I Jestem prawie pewien, ale sprawdzę to z skrzypkiem. Dzięki za radę! – Grant