2012-04-04 17 views
7

के साथ सर्विसस्टैक को काम करने के लिए नहीं मिल रहा है IIS6 में HTTPS के साथ काम करने के लिए सर्विसस्टैक प्राप्त करने में मुझे समस्या हो रही है और मुझे इसे स्थापित करने के लिए कोई दस्तावेज़ नहीं दिख रहा है। वर्तमान में मेरे पास एक एंडपॉइंट सेटअप है - http://example.com/api.ashx। जब मैं इसे ब्राउज़ करता हूं, तो मुझे उपयोगी सर्विसस्टैक जेनरेट पृष्ठ मिलता है जो http://example.com/api.ashx/metadata पर उपलब्ध एपीआई बताता है। जब मैं https://example.com/api.ashx को ब्राउज़ (नोटिस https) मैं बजाय यह त्रुटि संदेश मिलता है -आईटीआई 6 में एचटीटीपीएस

'/' आवेदन में

सर्वर त्रुटि। संसाधन नहीं पाया गया। विवरण: HTTP 404. जिस संसाधन को आप ढूंढ रहे हैं (या इसकी निर्भरताओं में से एक) को हटा दिया जा सकता था, इसका नाम बदल गया था, या अस्थायी रूप से अनुपलब्ध है। कृपया निम्नलिखित यूआरएल की समीक्षा करें और सुनिश्चित करें कि यह सही वर्तनी है। अनुरोध किया गया URL: /api.ashx

मैं निम्नलिखित मेरे web.config में निर्धारित किया है (यहाँ उदाहरण के अनुसार - http://www.servicestack.net/ServiceStack.Hello/) -

<!-- ServiceStack: Required to host at: /api.ashx --> 
    <location path="api.ashx"> 
     <system.web> 
      <httpHandlers> 
       <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/> 
      </httpHandlers> 
     </system.web> 

अपने स्थानीय विंडोज 7 बॉक्स पर मैं चल रहा हूँ आईआईएस 7 और यह ठीक काम करता है लेकिन परीक्षण और लाइव वातावरण अभी भी आईआईएस 6 का उपयोग कर रहे हैं और मैं इसे वहां काम नहीं कर सकता।

अन्य नियमित एएसपीएक्स पृष्ठ https का उपयोग करते समय ठीक काम कर रहे हैं।

मैं किसी की भी सराहना करता हूं जो मुझे सही दिशा में धक्का दे सकता है!

उत्तर

9

आईआईएस 6 के साथ समस्या यह है कि आईआईएस 6.0 अनुरोध पाइपलाइन एएसपी.NET एक्सटेंशन के बिना पथ को पहचान नहीं पाती है .aspx एएसपी.नेट आईएसपीआई हैंडर को पास नहीं किया जाता है। तो वहाँ आम तौर पर यह इतना होने के लिए आप ServiceStack आईआईएस 6 पर चलने के लिए प्राप्त कर सकते हैं प्राप्त करने के लिए 2 विकल्प हैं:

  1. बदलें servicestack 'servicestack.ashx'

    को '*' से web.config में पथ

    <system.web>

    <httpHandlers> < जोड़ने पथ = "servicestack.ashx" type = "ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" क्रिया = "*"/> </httpHandlers >

    </system.web>

  2. एक वाइल्डकार्ड मानचित्रण अपने वर्चुअल निर्देशिका ASP.NET करने के लिए सभी बिना क्रिया अनुरोध पारित करने के लिए जोड़ें: आईआईएस के साथ एक वाइल्डकार्ड स्क्रिप्ट नक्शा बनाने के लिए इन चरणों का पालन 6।0:

    1. राइट-क्लिक करें एक वेबसाइट का चयन करें गुण
    2. होम निर्देशिका टैब
    3. का चयन विन्यास बटन
    4. क्लिक करें मैपिंग टैब
    5. का चयन करें सम्मिलित करें बटन पर क्लिक करें (चित्रा 4 देखें)
    6. निष्पादन योग्य फ़ील्ड में aspnet_isapi.dll के पथ को पेस्ट करें (आप इस पथ को .aspx फ़ाइलों के लिए स्क्रिप्ट मानचित्र से कॉपी कर सकते हैं)
    7. ch अनचेक करें लेबल उस फ़ाइल सत्यापित करें eckbox मौजूद
    8. ठीक बटन

IIS 6.0 Wildcard mapping

+0

असल में, एक और कदम था जिसे मैंने याद किया (प्रमाणपत्र से संबंधित मुद्दा)। मेरी गलती। यह मदद करता है, धन्यवाद :) –

+0

कोशिश की गई विकल्प 1: मुझे एक हैंडलर की बजाय 404 त्रुटि मिलती है त्रुटि नहीं मिली, विकल्प 2 का प्रयास करें: अभी भी हैंडलर त्रुटि नहीं मिली है, विकल्प में वाइल्डकार्ड एक्सटेंशन मैपिंग सेट करने के बाद विकल्प 1 फिर से प्रयास करें 2: 404 त्रुटि। कोई अन्य विचार यहाँ? मैं इसे आईआईएस 6 में काम करने के लिए काफी हद तक फंस गया हूं। – kmehta

1

mythz जवाब मेरे लिए काम नहीं किया पर क्लिक करें।

मुझे servicestack कॉन्फ़िगरेशन के साथ web.config पर एक स्थान टैग जोड़कर यह काम मिल गया। मैंने पाया कि servicestack = "*" पथ के साथ काम किया है - लेकिन कई अनुरोध (Episerver) को लिया, लेकिन इस तरह इसे हल:

<location path="UniqueTag"> 
    <system.web> 
     <httpHandlers> 
      <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" /> 
     </httpHandlers> 
    </system.web> 
</location> 

और फिर पहले से जुड़ा हुआ UniqueTag के साथ सभी मार्गों:

[Route("/UniqueTag/DeletePost/{Id}", Verbs = "POST")] 

लेकिन ध्यान दें कि मिथज़ के उत्तर से विकल्प 2 की भी आवश्यकता हो सकती है, क्योंकि यह हमारे समाधान में डिफ़ॉल्ट सेटअप था।

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