दिलचस्प पोस्ट
सी # परिवर्तनशील scoping: इस क्षेत्र में 'एक्स' घोषित नहीं किया जा सकता क्योंकि यह 'एक्स' के लिए एक अलग अर्थ देगी साप्ताहिक 100,000 ईमेल कैसे भेजें? रेजेक्स के साथ जावास्क्रिप्ट में एचटीएमएल टैग निकालें सी # में पंक्ति द्वारा एक फ़ाइल लाइन पढ़ना एंड्रॉइड ऐप में पीडीएफ कैसे बनाएं? संभावित खतरनाक अनुरोध। क्लाइंट से फ़ार्म मान का पता चला है Fragments का उपयोग करके एंड्रॉइड में प्रत्येक टैब के लिए अलग-अलग स्टैक जावा ने गैर-दोहराव यादृच्छिक संख्या उत्पन्न की MySQL रेंज में लापता तारीखें कैसे भरें? प्लग इन स्थापित करने में असमर्थ Grails कैसे फाइल करने के लिए cin और cout पुनर्निर्देशित करने के लिए? त्रुटि: "आईएसएएम को संस्थापित नहीं किया जा सका" DataTable में DataColumn के DataType को कैसे बदलें? क्या लूप के लिए विभिन्न प्रकार के दो चर को घोषित करना संभव है? आर: कस्टम लेजेंड फॉर मल्टीपल लेयर जीगप्लोट

मैं आईआईएस के लिए आईआईएस को एचटीएमएल 5 मोड में एन्जिलरजेएस एप्लीकेशन में लिखने के लिए कैसे कॉन्फ़िगर करूं?

मेरे पास अंगुलियोज़ बीज परियोजना है और मैंने जोड़ दिया है

$locationProvider.html5Mode(true).hashPrefix('!'); 

app.js फ़ाइल में मैं सभी अनुरोधों को रूट करने के लिए आईआईएस 7 को कॉन्फ़िगर करना चाहता हूं

 http://localhost/app/index.html 

ताकि यह मेरे लिए काम करता है मैं यह कैसे करु?

अद्यतन करें:

मैंने अभी IIS यूआरएल रीराइट मॉड्यूल की खोज, डाउनलोड और स्थापित किया है, उम्मीद है कि यह मेरे लक्ष्य को प्राप्त करने के लिए आसान और स्पष्ट कर देगा।

अपडेट 2 :

मुझे यह लगता है कि मैं क्या हासिल करने की कोशिश कर रहा हूं ( अंगरीजेएस डेवलपर दस्तावेज़ से लिया गया):

इस मोड का उपयोग करने के लिए यूआरएल सर्वर साइड पर फिर से लिखना की आवश्यकता है, मूल रूप से आपको अपने आवेदन के प्रवेश बिंदु के लिए अपने सभी लिंक्स को पुन: लिखना होगा (जैसे index.html)

अपडेट 3:

मैं अभी भी इस पर काम कर रहा हूं और मुझे एहसास है कि मुझे कुछ ऐसे यूआरएल जैसे रीडायरेक्ट नहीं करना है

 http://localhost/app/lib/angular/angular.js http://localhost/app/partials/partial1.html 

इसलिए सीएसएस, जेएस, लिब या आंशिक निर्देशिका में जो कुछ भी रीडायरेक्ट नहीं होता है बाकी सब कुछ को ऐप / index.html पर पुनर्निर्देशित करने की आवश्यकता होगी

किसी को भी पता है कि हर एक फाइल के लिए एक नियम जोड़ने के बिना यह कैसे आसानी से प्राप्त करने के लिए?

अपडेट 4:

IIS यूआरएल रीराइट मॉड्यूल में परिभाषित 2 इनबाउंड नियम हैं I पहला नियम है:

आईआईएस यूआरएल रीडायरेक्ट इनबाउंड नियम 1

दूसरा नियम है:

आईआईएस यूआरएल रीडायरेक्ट इनबाउंड नियम 2

अब जब मैं स्थानीय होस्ट / ऐप / दृश्य 1 पर नेविगेट करता हूं तो यह पृष्ठ को लोड करता है, हालांकि सहायक फाइलें (सीएसएस, जेएस, लिब और आंशिक निर्देशिकाओं में) को ऐप / index.html पेज पर फिर से लिखी जा रही हैं – इसलिए सब कुछ आ रहा है वापस index.html पृष्ठ के रूप में कोई भी बात नहीं है कि यूआरएल क्या इस्तेमाल किया जाता है। मुझे लगता है कि इसका मतलब है मेरा पहला नियम है, जो इन नियमों को दूसरे नियम से संसाधित करने से रोकता है, काम नहीं कर रहा है .. कोई विचार? …किसी को? …मुझे बहुत ज्यादा अकेलापन महसूस हुआ… 🙁

वेब के समाधान से एकत्रित समाधान "मैं आईआईएस के लिए आईआईएस को एचटीएमएल 5 मोड में एन्जिलरजेएस एप्लीकेशन में लिखने के लिए कैसे कॉन्फ़िगर करूं?"

मैं web.config में $locationProvider.html5Mode(true) बाद एक नियम लिखता हूं $locationProvider.html5Mode(true) app.js में सेट है

आशा है, किसी को मदद करता है

  <system.webServer> <rewrite> <rules> <rule name="AngularJS Routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite> </system.webServer> 

मेरी index.html में मैंने इसे <head> जोड़ा

 <base href="/"> 

आईआईएस यूआरएल सर्वर पर फिर से लिखना स्थापित करने के लिए मत भूलना।

इसके अलावा यदि आप वेब एपीआई और आईआईएस का उपयोग करते हैं, तो यह काम करेगा यदि आपका एपीआई www.yourdomain.com/api क्योंकि तीसरा इनपुट (स्थिति की तीसरी पंक्ति)

आईआईएस इनबाउंड नियम, जैसा कि प्रश्न DO काम में दिखाया गया है। मुझे ब्राउज़र कैश को साफ़ करना पड़ा और index.html पृष्ठ के अपने <head> अनुभाग के शीर्ष पर निम्न पंक्ति जोड़ें:

 <base href="/myApplication/app/" /> 

ऐसा इसलिए है क्योंकि मेरे पास स्थानीय होस्ट में एक से अधिक एप्लिकेशन हैं और इसलिए अन्य आंशिक लोगों को अनुरोध localhost/app/view1 बजाय localhost/app/view1 लिए लिया जा रहा है

उम्मीद है कि यह किसी को मदद करता है!

मेरे मामले में मैंने सही पुनर्लेखन नियमों को सेटअप करने के बाद 403.14 प्राप्त कर रखा था। यह पता चला है कि मेरी एक निर्देशिका थी जो मेरे यूआरएल मार्गों में से एक के समान ही थी एक बार मैं IsDirectory पुनर्लेखन नियम को हटा दिया, मेरे मार्ग ठीक से काम करते थे। क्या कोई ऐसा मामला है जहां डायरेक्ट्री अस्वीकृति को हटाने से समस्याएं हो सकती हैं? मैं अपने मामले में किसी के बारे में नहीं सोच सकता। एकमात्र ऐसा मामला जो मैं सोच सकता हूँ, यदि आप अपने ऐप के साथ एक निर्देशिका ब्राउज़ कर सकते हैं।

 <rule name="fixhtml5mode" stopProcessing="true"> <match url=".*"/> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> 

केवल इन दो शर्तों के साथ समस्या:

  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 

यह है कि वे केवल तब तक काम करते हैं जब तक कि {REQUEST_FILENAME} डिस्क पर शारीरिक रूप से मौजूद न हो । इसका अर्थ है कि परिदृश्य हो सकता है जहां गलत नाम से आंशिक दृश्य के लिए अनुरोध 404 के बजाय रूट पेज को वापस करेगा, जिससे दो बार लोड होने वाला कोणीय हो सकता है (और कुछ परिदृश्य में यह एक गंदा अनंत लूप पैदा कर सकता है)।

इस प्रकार, कुछ सुरक्षित "फॉलबैक" नियमों को इन समस्याओं का निवारण करने के लिए इन मुश्किलों से बचने के लिए अनुशंसित किया जाएगा:

  <add input="{REQUEST_FILENAME}" pattern="(.*?)\.html$" negate="true" /> <add input="{REQUEST_FILENAME}" pattern="(.*?)\.js$" negate="true" /> <add input="{REQUEST_FILENAME}" pattern="(.*?)\.css$" negate="true" /> 

या एक ऐसी स्थिति है जो किसी फ़ाइल को समाप्त करती है :

 <conditions> <!-- ... --> <add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" /> </conditions> 

मुझे सबसे आसान तरीका मिल गया केवल उन अनुरोधों को पुनर्निर्देशित करने के लिए है जो ग्राहक को 404 को ट्रिगर करता है। यह एक हैशटैग जोड़कर किया जाता है, भले ही $locationProvider.html5Mode(true) सेट हो।

यह चाल एक ही वेब साइट पर अधिक वेब अनुप्रयोग के साथ वातावरण के लिए काम करती है और यूआरएल अखंडता बाधाओं (ईजी बाहरी प्रमाणीकरण) की आवश्यकता होती है। यहाँ कदम से कदम है कि कैसे करना है

index.html

<base> तत्व को ठीक से सेट करें

 <base href="@(Request.ApplicationPath + "/")"> 

web.config

पहले एक कस्टम पेज पर 404 रीडायर करते हैं, उदाहरण के लिए "होम / एरर"

 <system.web> <customErrors mode="On"> <error statusCode="404" redirect="~/Home/Error" /> </customErrors> </system.web> 

होम नियंत्रक

क्लाइंट साइड मार्ग में "अनुवाद" इनपुट के लिए एक सरल ActionResult लागू करें

 public ActionResult Error(string aspxerrorpath) { return this.Redirect("~/#/" + aspxerrorpath); } 

यह सबसे आसान तरीका है


कुछ सुधार वाले तर्क के साथ त्रुटि कार्य को बढ़ाने के लिए यह संभव है (सलाह है?) जब ग्राहक यूआरएल मान्य है और 404 को सामान्य रूप से क्लाइंट पर कुछ भी नहीं मिलेगा, तो क्लाइंट के लिए 404 को रीडायरेक्ट करने के लिए संभव है। मान लें कि आपके पास ये कोणीय मार्ग हैं

 .when("/", { templateUrl: "Base/Home", controller: "controllerHome" }) .when("/New", { templateUrl: "Base/New", controller: "controllerNew" }) .when("/Show/:title", { templateUrl: "Base/Show", controller: "controllerShow" }) 

यूआरएल को यूआरएल को रीडायरेक्ट करने का मतलब केवल तभी होता है जब यह "/ न्यू" या "/ शो /" से शुरु होता है

 public ActionResult Error(string aspxerrorpath) { // get clientside route path string clientPath = aspxerrorpath.Substring(Request.ApplicationPath.Length); // create a set of valid clientside path string[] validPaths = { "/New", "/Show/" }; // check if clientPath is valid and redirect properly foreach (string validPath in validPaths) { if (clientPath.StartsWith(validPath)) { return this.Redirect("~/#/" + clientPath); } } return new HttpNotFoundResult(); } 

यह केवल सुधार तर्क का एक उदाहरण है, ज़ाहिर है कि हर वेब एप्लिकेशन में अलग-अलग ज़रूरतें हैं