J'utilise pour la première fois le nouveau Visual Studio 2013 avec IISExpress (serveur de développement ASP.net précédemment utilisé sur VS2010). Je rencontre des problèmes en essayant de déboguer mon projet.
Voici ce que je vois dans Chrome:
Impossible d'établir une connexion sécurisée au serveur. Cela peut être un problème avec le serveur ou peut nécessiter un certificat d'authentification client que vous n'avez pas. Code d'erreur: ERR_SSL_PROTOCOL_ERROR
J'ai mis à jour mon fichier de propriétés -> web afin que l'URL du projet utilise maintenant une URL https. Cependant, après cela, je reçois maintenant une nouvelle erreur lors du lancement:
La connexion à localhost a été interrompue. Code d'erreur: ERR_CONNECTION_RESET
Merci
Si vous utilisez URLRewrite pour forcer les connexions SSL dans votre web.config, il est probablement en train de réécrire votre adresse localhost pour forcer https. Si le débogage avec SSL activé n'est pas important pour vous et que vous utilisez URLRewrite, envisagez d'ajouter <add input="{HTTP_Host}" pattern="localhost" negate="true" />
dans la section de réécriture de votre fichier web.config. Cela arrêtera la réécriture pour toutes les adresses d'hôte local mais le laissera en place dans un environnement de production. Si vous n'utilisez pas URLRewrite ou si vous avez besoin de déboguer avec SSL, http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx peut vous aider. C'est pour VS2010, mais cela devrait aussi suffire pour VS2013.
J'avais ERR_CONNECTION_RESET parce que mon application configurée pour Visual Studio 2013/IIS Express numéro de port n'était PAS dans la plage : 44300-: 44398. (Je ne me souviens pas d'avoir ignoré les avertissements pour obtenir une sortie de cette plage.) Changer le numéro de port pour une valeur dans cette plage est tout ce que j'avais à faire pour que cela fonctionne. .
J'ai remarqué cela après avoir examiné la sortie netsh http show sslcert > sslcert.txt
et un clic avec des éléments que j'ai lus récemment au sujet des numéros de port.
Assurez-vous de supprimer tous les certificats 'localhost' précédents, car ils pourraient entrer en conflit avec celui généré par IIS Express. J'ai eu cette même erreur (ERR_SSL_PROTOCOL_ERROR), et il m'a fallu de nombreuses heures pour le résoudre finalement après avoir essayé de nombreuses "solutions". Mon erreur est que j'ai créé mon propre certificat 'localhost' et qu'il y en avait deux. Je devais supprimer les deux et faire en sorte que IIS Express le recrée.
Voici comment vérifier et supprimer le certificat 'localhost':
Sous Visual Studio, sélectionnez projet et, dans l’onglet Propriétés, activez SSL = true. Sauvegarder, construire et exécuter. IIS Express générera un nouveau certificat 'localhost'.
Remarque: Si cela ne fonctionne pas, essayez les solutions suivantes: veillez à désactiver IIS Express sur le projet VS et à arrêter toutes les applications en cours d'exécution sur celle-ci avant de supprimer le certificat 'localhost'. De plus, vous pouvez aller à 'Panneau de configuration> Programmes' et à Réparer IIS Express.
Je résume les étapes qui m'ont aidé à résoudre ce problème:
Au cours de l'installation, IIS Express utilise Http.sys pour réserver les ports 44300 à 44399 pour une utilisation SSL. Cela permet aux utilisateurs standard (sans privilèges élevés) d'IISExpress de configurer et d'utiliser SSL. Pour plus de détails à ce sujet, voir ici
netsh http show sslcert> sslcert.txt
IP: port : 0.0.0.0:44300
Certificat de hachage : eb380ba6bd10fb4f597cXXXXXXXXXX
ID de l'application : {214124cd-d05b-4309-XXX-XXXXXXX}
(Cliquez sur ServerRoot -> sous la section IIS () -> Ouvrez les certificats de serveur)
netsh http delete sslcert ipport = 0.0.0.0: 44300
netsh http add sslcert ipport = 0.0.0.0: 44300 certhash = New_Certificate_Hash_without_space appid = {214124cd-d05b-4309-XXX-XXXXXXX}
New_Certificate_Hash sera votre certificat par défaut lié à votre hôte local (que nous avons trouvé à l'étape 4) ou celui que vous souhaitez ajouter en tant que nouveau certificat.
P.S. Merci pour votre réponse osɐſ (ce qui m'a aidé à résoudre ce problème)
Le problème que je rencontrais a eu à faire avec moi, à un moment donné, permettant HSTS pour localhost et ne réalisant pas que cela casserait mon http: // localhost: someport dans IIS Express.
HSTS indique au navigateur (Chrome dans mon cas) de demander TOUJOURS une URL à l'aide du protocole HTTPS. Ainsi, même si je n’avais même pas activé SSL pour mon application MVC 5, le navigateur essaierait toujours d’accéder à mon site en utilisant HTTPS dans l’URL au lieu de HTTP.
Le correctif?
Aucune des options ci-dessus n'a fonctionné pour moi. Je devais faire ce qui suit:
J'ai eu les étapes de ce fil.
J'espère que cela t'aides.
J'ai un même problème dans Visual Studio 2015. Parce que j'utilise une liaison SSL dans web.config
<rewrite>
<rules>
<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
Et je peux résoudre le problème avec la réponse de Mr.djroedger. En remplaçant
<add input="{HTTPS}" pattern="off" />
avec
<add input="{HTTP_Host}" pattern="localhost" negate="true" />
dans mon web.config, donc mon code est
<rewrite>
<rules>
<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_Host}" pattern="localhost" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
Dans mon cas, j’ai créé un certificat auto-signé et je l’avais fait fonctionner, sauf que je recevais une erreur dans le navigateur car le certificat n’était pas approuvé. J'ai donc déplacé le certificat dans le dossier Autorités de certification racines de confiance> Certificats du composant logiciel enfichable Certificats. Cela a fonctionné, puis j'ai fermé Visual Studio pour la journée.
Le lendemain, j'ai commencé mon projet et j'ai reçu l'erreur mentionnée dans la question initiale. Le problème est que le certificat avec lequel vous avez configuré IISExpress doit exister dans le dossier Personnel> Certificats, sinon HTTPS cessera de fonctionner. Une fois que IIS Express a démarré avec succès, vous pouvez faire glisser le certificat vers l'emplacement approuvé. Il continuera à fonctionner jusqu'à ce que vous redémarriez IIS Express.
Ne voulant pas faire de bruit en traînant le certificat d'avant en arrière à chaque fois, je viens de placer une copie du certificat aux deux endroits et maintenant tout fonctionne bien.
J'avais ce problème, j'avais configuré mon site pour l'exigence globale https dans FilterConfig.cs.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new RequireHttpsAttribute());
}
J'avais oublié de changer l'URL du projet en https: à partir de ce tutoriel http://Azure.Microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app- membership-oauth-sql-database / sous ENABLE SSL part 4. Cela a causé les erreurs que vous obteniez.
Un autre problème qui m'est arrivé deux fois:
Dans IIS Express applicationhost.config
l'ordre des liaisons a de l'importance. Une liaison peut avoir priorité sur votre liaison SSL, ce qui la rend inopérante.
Exemple:
<site name="MySite007" id="1">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\myuser\projects\mysolutionfolder\MyProject.Service" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8081:localhost" />
<binding protocol="http" bindingInformation=":8080:" /><!-- evil binding -->
<binding protocol="https" bindingInformation="*:44327:localhost" />
</bindings>
</site>
Vous avez peut-être ajouté une liaison similaire à la seconde pour pouvoir accéder à votre WebService depuis l’extérieur localhost
. Étant donné que cette liaison est à l'écoute de n'importe quelle adresse, elle semble remplacer la liaison SSL bien qu'un port différent ait été utilisé.
Supprimez diabolique ou déplacez-le vers le bas.
Ceci est anecdotique comme entendu par un collègue, mais ce serait un problème avec chrome forcing https. J'ai l'habitude de lancer dans Firefox donc je n'avais pas vu ce problème avant. Utilisation de Firefox ou c.-à-d. Travaillé pour mon collègue.
Le ' vérificateur d'installation de certificats Digicert ' est souvent utile dans de telles situations.
J'ai pu vérifier que le certificat SSL en cours d'essais était celui que j'attendais en comparant le numéro de série.
Pour moi, @Jason Kleban a répondu au problème, mais c’est un utilitaire très utile pour vérifier vos assertions de base sur le type de certificat chargé.
Si vous nécessité d'utiliser un port situé en dehors de la plage 44300-44399, voici une solution de contournement:
Cela enregistre le IIS certificat Express Development avec ce port et constitue le moyen le plus simple que j'ai trouvé pour contourner l'exigence de la plage 44300-44399.
Dans mon cas, j'avais simplement oublié que j'avais établi une liaison pour (dans mon cas) https: // localhost: 443 en version complète IIS. Vous ne pouvez pas avoir les deux!
Mon problème a été causé par Fiddler. Lorsque Fiddler se bloque, il perturbe parfois les paramètres de votre proxy. Le simple lancement de Fiddler semblait tout réparer (peut-être qu'il se répare lui-même).
Pour faire suite à d’autres réponses concernant la définition du port SSL entre 44300 et 44399, j’ai été incapable de modifier la propriété SSL activé dans Visual Studio, ni de définir une URL SSL spécifique. D'autres réponses, telles que la réparation de IIS Express, n'ont pas aidé. La solution consistait à accéder au dossier .vs parallèlement au fichier sln, à ouvrir le sous-dossier config, puis à modifier le fichier applicationhost.config. Ensuite, j'ai ajouté manuellement la ligne https et redémarré VS.
<binding protocol="http" bindingInformation="*:24941:localhost" />
<binding protocol="https" bindingInformation="*:44301:localhost" />
Supprimer les répertoires IISExpress et vs et utiliser une plage de ports SSL de 44300 à 44399 (inclus) à partir de cet article a fonctionné pour moi
Dans mon cas, l'URL localhost a été redirigé vers https: // localhost lorsque j'étais en train de déboguer. Cela s'est produit d'un moment à l'autre, sans rien changer. J'ai résolu ce problème en faisant un rechargement dur dans le navigateur. Ici le lien
Je venais de reconstruire mon ordinateur. Ce fil m'a donné les indices, où j'ai réalisé dans les paramètres du projet> Web, que le projet était configuré pour utiliser HTTP et le port HTTP. En le mettant à jour vers HTTPS et le port HTTPS correct, tout a recommencé à fonctionner.