2015-03-31 2 views
2

J'ai créé une fonction simple pour exécuter une requête PUT Http -URI non valide: port non valide spécifié dans C# sur la spécification URL avec le numéro de port comme http: // localhost: 8080/JasperServer/repos

public string checkIfUserExists(string userName) 
    { 
     var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/"+userName); 

     var request = (HttpWebRequest)WebRequest.Create(endPoint); 
     request.Method = "PUT"; 
     request.ContentType = "urlencoded"; 

     var response = (HttpWebResponse)request.GetResponse(); 

     return "Success"; 
    } 

quand j'exécute, je reçois une exception « URI non valide: port spécifié non valide » à la ligne -

var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/"+userName); 

Toutes les idées pour la fixation de ce? Est-ce que le problème avec localhost: 8080 partie de l'URL?

Répondre

1

Je fixe cette erreur en utilisant la méthode string.Concat(): -

var endPoint = new Uri(string.Concat("http://localhost:8080/jasperserver/rest_v2/users/", userName)); 
1

Jetez un oeil à cette question Invalid URI: Invalid port specified when url has more than one colon

Avez-vous vérifié votre nom d'utilisateur pour les caractères qui pourraient causer un problème?

EDIT after comment - La raison pour laquelle j'ai fait référence à cette question était parce que l'erreur 'Invalid Port' est survenue non parce que le port était incorrect, mais à cause d'autres caractères invalides dans l'URL. La validation de l'encodage correct du nom d'utilisateur évitera ce problème.

var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/" 
     + HttpUtility.UrlEncode(userName)); 
+0

En fait, je regardé ce poste avant moi d'être publié. Je suis légèrement confus au sujet de - NetworkCredential (chaîne, chaîne) fonction. Il faut 2 chaînes d'entrée mais je dois passer seulement 1 chaîne userid. Il ne semble pas avoir de surcharge qui accepte 1 paramètre d'entrée. – Rookie

+0

Voir mon édition - la section 'NetworkCredential' est un peu trompeuse, le point était que l'erreur ne doit pas être causée par le port spécifié –