2012-11-20 14 views
11

के साथ मैं रूट के लिए एक रेस्टपैथ सेट करने की कोशिश कर रहा हूं, '/', लेकिन यह मुझे अनुमति नहीं देता है। इसकी कहानियां RestPath '/' on Type 'MainTasks' is not Validरूट पथ के लिए मार्ग बनाएं, '/', सर्विसस्टैक

क्या यह अनुमति देने का कोई तरीका है? मैं रूट से संसाधन प्रदान करना चाहता हूं।

[Route("/", "GET")] 
public class MainTasks : IReturn<MainTasksResponse> 
{ 
} 

उत्तर

9

आप केवल एक FallbackRoute साथ ServiceStack में मार्ग / पथ पर मिलान कर सकते हैं, उदाहरण के लिए:

[FallbackRoute("/{Path*}")] 
public class Fallback 
{ 
    public string Path { get; set; } 
} 

यह हर बेजोड़ मार्ग (। इंक/foo/बार) को संभालने के लिए एक वाइल्डकार्ड का उपयोग करता है। केवल 1 फ़ॉलबैक मार्ग की अनुमति है।

भी कुछ अन्य तरीके डिफ़ॉल्ट रूट पथ को संभालने के लिए/के होते हैं:

  1. बदलें EndpointHostConfig.DefaultRedirectPath सेवा आप
  2. उपयोग करने के लिए जोड़े इच्छा पर रीडायरेक्ट करने एक default.cshtml उस्तरा या Markdown देखें या स्थिर default.htm (एचटीएमएल अनुरोधों के लिए)
  3. EndpointHostConfig.RawHttpHandlers पंजीकृत करें - यह पहला हैंडलर ServiceStack's Order of Operations में देखा गया है।
  4. IAppHost.CatchAllHandlers पंजीकृत करें - यह अन-मिलान अनुरोधों के लिए कहा जाता है।
  5. एक Global Request Filter
+0

धन्यवाद। ऐसा लगता है कि मुझे "/ api" से सबकुछ उजागर करना होगा। –

+0

डिफ़ॉल्ट.htm को http: //localhost/default.htm पर पुनर्निर्देशित करना। Http: // localhost से इसे सीधे सेवा देने का कोई तरीका है? –

9

यह मेरे लिए काम किया में अनुरोध हैंडल। मैंने अभी RawHttpHandler को जोड़ा और अनुरोध पथ को फिर से लिखा। एक चैंप की तरह काम किया। (यह मेरा AppHost के विन्यस्त समारोह में पाया जाता है।)

var conf = new EndpointHostConfig(); 
{ 
    DefaultRedirectPath = "/foo", 
    AllowFileExtensions = { { "eot" }, { "svg" }, { "ttf" }, { "woff" } }, 
}; 

conf.RawHttpHandlers.Add(r => 
{ 
    if (r.RawUrl == "/") 
    { 
     HttpContext.Current.RewritePath(conf.DefaultRedirectPath); 
    } 

    return null; 
}); 

this.SetConfig(conf); 
+0

यह एक सुंदर समाधान है, साझा करने के लिए thx! :) – mythz

+0

यह वास्तव में कमाल है, धन्यवाद! मैं '/ ...] HttpContext.Current.Response का उपयोग करके'/'को एक संपूर्ण विभिन्न यूआरएल में रीडायरेक्ट करने के लिए इसका उपयोग कर रहा हूं (servicestack ऐप पूरी तरह से एक निष्पक्ष एपीआई एंडपॉइंट और'/'एपीआई दस्तावेज साइट पर रीडायरेक्ट करता है)। रीडायरेक्ट ("http://somesite.com/api", सच); [...] '। –

0

मैं यह करने की कोशिश कर रहा है और अब काम करने के लिए क्रिस्टोफर डेविस विधि पाया एक स्वयं की मेजबानी की सेवा के लिए नवीनतम सेवा ढेर में। मेरी सेवा पर निम्नलिखित कोई पैरामीटर नहीं लेता है।

[FallbackRoute ("/")]

संबंधित मुद्दे