2011-07-22 13 views
5

में गलत SPContext मेरे पास SharePoint 2010 (उदाहरण के लिए, _http: // sp2010 /) है। मैंने साइट (_http: // sp2010/site /) और WCF सेवा बनाई है, जिसे ISAPI फ़ोल्डर में होस्ट किया गया है। _http -WCF सेवा

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

मैं इस पते का उपयोग कर मेरे कंसोल आवेदन से सेवा को कॉल: //sp2010/site/_vti_bin/WcfService.svc/mex सेवा में मैं इस तरह के परीक्षण विधि है। विधि कॉल करते समय GetCurrentWebUrl मुझे _http: // sp2010/site/प्राप्त करने की उम्मीद है, लेकिन मुझे हमेशा _http: // sp2010/मिलता है। दूसरे शब्दों में एसपीसीएन्टेक्स्ट सही नहीं है।

मैं क्या गलत कर रहा हूं? मैं सही संदर्भ कैसे प्राप्त कर सकता हूं?

उत्तर

1

क्या आप वाकई चेक कर सकते हैं कि आप वास्तव में http://sp2010/site/_vti_bin/WcfService.svc/mex पर कॉल कर रहे हैं? विजुअल स्टूडियो ऐड सर्विस रेफरेंस डायलॉग का उपयोग करते समय, यह आमतौर पर रूट का उपयोग करता है, जैसा कि http://sp2010/_vti_bin/WcfService.svc/mex में है।

आप कोड यह वास्तव में काम करना चाहिए में यह सेट कर रहे हैं, कम से कम यह मेरे लिए करता है :(

क्या SPContext.Current.Web.Url और Web.ID है? उस मैच/साइट/वेब?

+0

बात है यह है कि , 'SPContext.Current.Web.Url = http: // sp2010/'। मेरे पास एक और साइट है:' http: // sp2010/site2/'। मैंने इस के साथ प्रयास किया, लेकिन फिर' SPContext.Current.Web.Url = http: // sp2010/' – Grant

+0

@ ग्रिंट और आप 100% सुनिश्चित हैं कि आप सही उप-साइट में _vti_bin को मार रहे हैं और रूट पर नहीं? फिडलर का उपयोग यह सत्यापित करने के लिए करें कि आप वास्तव में उस URL को मार रहे हैं जिसे आप हिट करना चाहते हैं: http://www.fiddler2.com/fiddler2/ –

+0

I मुझे यकीन है, लेकिन मैं इसे फिडलर से देखूंगा। सलाह के लिए धन्यवाद! – Grant