MVC + IIS7 = CSS Έκδοση




Έχω μια ιστοσελίδα τρέχει μέσω IIS7 σε Vista. Η ιστοσελίδα λειτουργεί στη θύρα 88, έτσι [http: // localhost: 88](http://localhost:88) θα πρέπει να καθιστούν την προεπιλεγμένη προβολή / Home / Index.


Αυτό λειτουργεί σωστά, όπως και όλες τις άλλες απόψεις. 


Ωστόσο, ένα πρόβλημα που είναι κάτοικος. σενάριο μονοπάτια μου δείχνουν / Scripts / [FILE] και μονοπάτια CSS μου δείχνουν / Περιεχόμενο / [FILE]. Η υπόθεσή μου είναι ότι ο / Περιεχόμενο του φακέλου ή / Scripts θα είναι πάντα στη ρίζα του τόπου, όπως δεν έχω καμία πρόθεση να τρέξει αυτό το site σε ένα περιβάλλον εικονικού καταλόγου. Κάθε φορά που οι σελίδες καθιστούν, δεν έχουν καμία CSS ή δέσμη ενεργειών! Έτσι, όλα φαίνονται ασταθές και η scripting προφανώς δεν λειτουργεί, ως εκ τούτου, πολλές από τις απόψεις δεν λειτουργεί σωστά.


Αυτό είναι ένα πολύ περίεργο πρόβλημα, αυτό που είμαι σίγουρος είναι αποτέλεσμα της έλλειψης μου γνώση που φιλοξενεί τα πράγματα κάτω από IIS7. Θα εκτιμούσα οποιαδήποτε βοήθεια κάποιος θα μπορούσε να προσφέρει. Ευχαριστώ πολύ!
Ελπίζω η συνέχεια του αυτό το νήμα μεταφέρει την επιθυμία για να βεβαιωθείτε ότι το πρόβλημα αυτό δεν οδηγεί κανείς από τον βράχο. Υπάρχουν πολλά έγγραφα σε διάφορα φόρουμ για την επίλυση αυτού του ζητήματος στα Vista, αλλά δεν μπόρεσα να βρω κάποια παρόμοια είδη για 2K8. Όπως αναφέρεται σε αυτό το [μήνυμα στο φόρουμ](http://forums.iis.net/p/1143592/1849083.aspx#1849083) ήμουν σε θέση να διορθώσετε το πρόβλημα σε ένα μηχάνημα Vista. Αλίμονο, μια παρόμοια εκτέλεση απέτυχε να επιλύσουν το θέμα στο 2K8.


Είχα διαπιστώσει ότι η StaticFileHandler είχε συμπεριληφθεί στο web.config [όπως προτείνεται σε αυτό το blog post στο apijunkie.com](http://www.apijunkie.com/APIJunkie/blog/post/2007/11/Breaking-changes-in-ASPNet-20-HTTP-Handlers-when-moving-from-IIS5-on-Windows-2000-to-IIS6-on-Windows-2003.aspx) . Ακόμα, καμία τύχη.


Αποσαφήνιση *καμία τύχη, εδώ* - server-side λειτουργία μου ήταν τέλεια. Όλες οι διαδρομές MVC λειτουργεί σαν πρωταθλητής. Απλά όλα τα CSS και JS απόδοση απέτυχε. Όταν το πρόγραμμα περιήγησης στραμμένο προς CSS ή JS αρχείων σελίδα που ήταν ASP.NET 404 και όχι το *παραδοσιακό* σελίδα 404 λάθους.


Έτσι πήγα στον διευθυντή IIS7 και στο πλαίσιο διαλόγου Handler αντιστοιχίσεις. Πρόσθεσα ένα νέο πρόγραμμα χειρισμού που καθορίζονται ο τύπος System.Web.StaticFileHandler και έδωσε παράταση * .css. Στη συνέχεια, επανέλαβε ότι για * .js, * .PNG και * .GIF αρχεία. Όταν ανανεώνεται η ιστοσελίδα στο πρόγραμμα περιήγησης, τα πάντα καθίστανται perectly. Τα παρακάτω στιγμιότυπα αποδεικνύουν αυτή τη διαδικασία.


Το Παράθυρο Αντιστοιχίσεις χειρισμού: 


![αντιστοιχίσεις χειριστή](https://bradygstorage.blob.core.windows.net/images/managed-handler.png)


Προσθέτοντας μια νέα Υπεύθυνη για τη διαχείριση Handler


![alt κείμενο](https://bradygstorage.blob.core.windows.net/images/add-managed-handler.png)


Αυτό επιλυθεί το πρόβλημα, και τώρα έχω μια τέλεια λειτουργία MVC app φιλοξενείται σε W2K. Ώρα για μια Guinness.
μια λύση είναι να χρησιμοποιήσεις την web έκδοση. θέλει chrome που νομίζω υπάρχει ακόμα στα 32bit. οι διευθύνσεις αυτές είναι τα shorcuts στη σελίδα about:home. συγκεκριμένα τα 8 πρώτα αν έχεις μία σειρά ενεργή, και τα 10 πρώτα αν έχεις 2-4. οι ρυθμίσεις παραμένουν ενεργές και αν τα απενεργοποιήσεις. <p>είχα το ίδιο πρόβλημα χρησιμοποιώντας asp.net mvc και <a href="http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/">βρήκα τη λύση εδώ</a> </p><blockquote> <p>υπάρχει μεγάλη σύγχυση μεταξύ των νεοεισερχομένων στο <strong> angularjs </strong> για το γιατί οι <code>$http</code> λειτουργίες στενογραφίας της υπηρεσίας (<code>$http.post()</code>, κλπ.) δεν φαίνονται να είναι εναλλάξιμες με το <strong> ισοδύναμα jquery </strong> (<code>jquery.post()</code>, κ.λπ.)</p> <p>η διαφορά είναι στον τρόπο <strong> jquery </strong> και <strong> angularjs </strong> σειριοποίηση και μετάδοση των δεδομένων. βασικά, το πρόβλημα έγκειται στη γλώσσα του server σας που δεν είναι σε θέση να καταλάβει τη μετάδοση του angularjs με εγγενή ... από προεπιλογή, <strong> jquery </strong> μεταδίδει δεδομένα χρησιμοποιώντας</p> <pre><code>content-type: x-www-form-urlencoded </code></pre> <p>και την εξοικειωμένη σειριοποίηση <code>foo=bar&amp;baz=moe</code>.</p> <p><strong> το angularjs </strong>, ωστόσο, μεταδίδει δεδομένα χρησιμοποιώντας</p> <pre><code>content-type: application/json </code></pre> <p>και <code>{ "foo": "bar", "baz": "moe" }</code></p> <p>η σειριοποίηση json, η οποία, δυστυχώς, μερικές γλώσσες διακομιστή web - <em> και συγκεκριμένα η php </em> - δεν απομακρύνονται εγγενώς.</p> </blockquote><p>δουλεύει άψογα.</p><p><b>κωδικας</b></p><pre><code>// your app's root module... angular.module('mymodule', [], function($httpprovider) { // use x-www-form-urlencoded content-type $httpprovider.defaults.headers.post['content-type'] = 'application/x-www-form-urlencoded;charset=utf-8'; /** * the workhorse; converts an object to x-www-form-urlencoded serialization. * @param {object} obj * @return {string} */ var param = function(obj) { var query = '', name, value, fullsubname, subname, subvalue, innerobj, i; for(name in obj) { value = obj[name]; if(value instanceof array) { for(i=0; i&lt;value.length; ++i) { subvalue = value[i]; fullsubname = name + '[' + i + ']'; innerobj = {}; innerobj[fullsubname] = subvalue; query += param(innerobj) + '&amp;'; } } else if(value instanceof object) { for(subname in value) { subvalue = value[subname]; fullsubname = name + '[' + subname + ']'; innerobj = {}; innerobj[fullsubname] = subvalue; query += param(innerobj) + '&amp;'; } } else if(value !== undefined &amp;&amp; value !== null) query += encodeuricomponent(name) + '=' + encodeuricomponent(value) + '&amp;'; } return query.length ? query.substr(0, query.length - 1) : query; }; // override $http service's default transformrequest $httpprovider.defaults.transformrequest = [function(data) { return angular.isobject(data) &amp;&amp; string(data) !== '[object file]' ? param(data) : data; }]; }); </code></pre> <p>το <strong>server</strong> (που αποστέλλεται το αίτημα post) πρέπει να περιλαμβάνει την κεφαλίδα <code>access-control-allow-headers</code> (κλπ) <strong>στην απάντησή του</strong>. η τοποθέτησή τους στο αίτημά σας από τον πελάτη δεν έχει καμία επίδραση.</p><p>αυτό οφείλεται στο γεγονός ότι εναπόκειται στον διακομιστή να καθορίσει ότι δέχεται αιτήσεις διασταυρούμενης προέλευσης (και ότι επιτρέπει την κεφαλίδα <code>content-type</code> αίτησης και ούτω καθεξής) - ο πελάτης δεν μπορεί να αποφασίσει για τον εαυτό του ότι ένας δεδομένος διακομιστής πρέπει να επιτρέπει την cors.</p> πολλή πιθανόν. για δες, έχεις tweaks και στο extensions έχεις ενεργοποιήσει το dash to panel και έχεις και ξεχωριστό extensions και έχεις ενεργοποιήση το ubuntu dock? ή το ανάπόδο?

[[image]](https://linux-user.gr/uploads/default/original/2x/f/f195d7a286ccf5d9cfa6e519190133787b8be50a.png "image") βρήκα τη λύση. έχει δηλωθεί ως bug και υπάρχει προσωρινό workaround:

<https://bugs.archlinux.org/task/64175#comment182833> [@stergios](/u/stergios) καλοσωρισες στην παρεα μας.

μπορεις να δοκιμασεις καποια αλλη ιστοσελιδα πχ το <https://vimeo.com> ή το [ted talks](https://www.ted.com/talks)

ο λογος γιατι προτεινω διαφορετικες ιστοσελιδες ειναι για να δω αν ειναι θεμα του browser ή αν ειναι θεμα καποιου codec που μπορει να λοιπει απο το συστημα σου.

παραλληλα ανοι… Θα χρησιμοποιηθεί για να πάρει αυτό - νομίζω ότι είναι ένα bug με το παράθυρο εντοπισμού σφαλμάτων «Autos»:


[http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/](https://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/) προτεινω να δοκιμασεις πρωτα με τους ανοιχτους οδηγους να δεις πως θα σε παει και αν συνεχισεις να εχεις προβλημα εγκατεστησε <https://snapcraft.io/install/fwts/manjaro>

που θα μας δωσει αναλυτικες πληροφοριες Εντάξει, έτσι κανείς δεν βοήθησε, θα γράψω τη λύση βρήκα τον εαυτό μου.


1. (Προαιρετικά) Εάν χρησιμοποιείτε το NVM, μπορείτε να εγκαταστήσετε τις τελευταίες node.js στην πρώτη θέση και να μεταβείτε σε αυτό, για να αποφύγετε πιθανά προβλήματα
2. Εγκαταστήστε το βήτα γωνιακή / CLI στην έκδοση 7, παγκόσμιο και τοπικό επίπεδο στο έργο
3. Σε package.json αντικαταστήστε όλες τις εμφανίσεις με την τρέχουσα έκδοση του γωνιακού σας (π.χ. 6.1.7) με ^ 7.0.0-beta.5
4. NPM εγκατάσταση
5. Εάν υπάρχουν προβλήματα διαγράψετε node\_modules και δοκιμάστε ξανά NPM εγκαταστήσετε


Αν θέλετε να είστε σίγουροι, ότι άλλα πακέτα σας είναι στην τελευταία έκδοση, μπορείτε να εγκαταστήσετε άδειο εφαρμογή γωνιακή 7 κάπου αλλού με β γωνιακή / cli και να ελέγξει τι άλλαξε στην package.json. Δυστυχώς γωνιακή ομάδα δεν παρέχει ένα εργαλείο για την εγκατάσταση επιθυμητό έκδοση του γωνιακού, αλλά βήτα cli εγκαθιστά γωνιακή 7 από προεπιλογή.


Όσο για Ivy renderer δεν είναι προεπιλογή σε γωνιακή 7 beta. Προσπάθησα να το ενεργοποιήσετε με το χέρι και δεν λειτούργησε. Φαίνεται ότι το έργο αυτό χρειάζεται πολύ περισσότερη δουλειά για να ολοκληρωθεί ακόμα και δεν υπάρχουν πολλές πληροφορίες στο διαδίκτυο πώς να το χρησιμοποιήσετε σωστά το προηγμένο σχέδιο (υπάρχουν μόνο μερικά πολύ απλά μαθήματα για κενές έργα).


Ivy κατάσταση renderer: <https://is-angular-ivy-ready.firebaseapp.com/#/status>
<https://github.com/angular/angular/blob/master/packages/core/src/render3/STATUS.md>


Ivy renderer φροντιστήριο: <https://blog.imaginea.com/ivy-a-look-at-the-new-render-engine-for-angular/>