J'utilise la passerelle ozeki ng SMS. Je ne parviens pas à envoyer de SMS à un mobile. S'il vous plaît, aidez-moi à envoyer SMS par Internet vers mobile
Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (textboxError = ". Après avoir défini cette valeur, vous pouvez désactiver la validation de la requête en définissant validateRequest =" false "dans la directive Page ou dans la section de configuration. Il est recommandé à votre application de vérifier explicitement toutes les entrées dans ce cas. Pour plus d'informations, voir http://go.Microsoft.com/fwlink/?LinkId=153133 .
Détails des exceptions: System.Web.HttpRequestValidationException: une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (textboxError = "
ET mon fichier cs est
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Text.RegularExpressions;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
textboxRecipient.Width = 400;
textboxMessage.Width = 450;
textboxMessage.Rows = 10;
textboxError.Width = 400;
textboxError.Rows = 5;
textboxError.ForeColor = System.Drawing.Color.Red;
textboxError.Visible = false;
textboxError.Text = "";
if (!Page.IsPostBack)
{
textboxRecipient.Text = "+441234567";
textboxMessage.Text = "Hello World!";
}
}
protected void buttonSendOnClick(object sender, EventArgs e)
{
//are required fields filled in:
if (textboxRecipient.Text == "")
{
textboxError.Text += "Recipient(s) field must not be empty!\n";
textboxError.Visible = true;
return;
}
//we creating the necessary URL string:
string ozSURL = "http://127.0.0.1"; //where Ozeki NG SMS Gateway is running
string ozSPort = "9501"; //port number where Ozeki NG SMS Gateway is listening
string ozUser = HttpUtility.UrlEncode("admin"); //username for successful login
string ozPassw = HttpUtility.UrlEncode("admin"); //user's password
string ozMessageType = "SMS:TEXT"; //type of message
string ozRecipients = HttpUtility.UrlEncode(textboxRecipient.Text); //who will get the message
string ozMessageData = HttpUtility.UrlEncode(textboxMessage.Text); //body of message
string createdURL = ozSURL + ":" + ozSPort + "/httpapi" +
"?action=sendMessage" +
"&username=" + ozUser +
"&password=" + ozPassw +
"&messageType=" + ozMessageType +
"&recipient=" + ozRecipients +
"&messageData=" + ozMessageData;
try
{
//Create the request and send data to Ozeki NG SMS Gateway Server by HTTP connection
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(createdURL);
//Get response from Ozeki NG SMS Gateway Server and read the answer
HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
string responseString = respStreamReader.ReadToEnd();
respStreamReader.Close();
myResp.Close();
//inform the user
textboxError.Text = responseString;
textboxError.Visible = true;
}
catch (Exception)
{
//if sending request or getting response is not successful Ozeki NG SMS Gateway Server may do not run
textboxError.Text = "Ozeki NG SMS Gateway Server is not running!";
textboxError.Visible = true;
}
}
}
et ma page d'asp est
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Ozeki NG SMS Gateway Message Sending Example</title>
</head>
<body>
<center>
<form id="smsdata" runat="server">
<asp:Table id="smstable" runat="server" style="text-align:left; border-width:thin; border-color:Silver;" BorderStyle="Solid">
<asp:TableRow>
<asp:TableCell ColumnSpan="2">
<b>Compose a message:</b>
<br />
<br />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell HorizontalAlign="Left" VerticalAlign="Top">
<asp:Label ID="labelRecipient" runat="server" Text="Recipient: "></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="textboxRecipient" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell HorizontalAlign="Left" VerticalAlign="Top">
<asp:Label ID="labelMessage" runat="server" Text="Message Text: "></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="textboxMessage" runat="server" TextMode="MultiLine"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell ColumnSpan="2" HorizontalAlign="Center">
<asp:Button ID="buttonSend" runat="server" Text="Send Message" OnClick="buttonSendOnClick" />
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell ColumnSpan="2" HorizontalAlign="Center">
<asp:TextBox ID="textboxError" runat="server" BorderStyle="None" TextMode="MultiLine"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</form>
</center>
</body>
</html>
Votre problème est que la valeur de l'un de vos champs (textboxError) inclut des balises de style XML ou HTML, qui sont par défaut interdites pour éviter aux développeurs de présenter des problèmes de sécurité potentiels dans leurs applications.
La solution est donnée dans le message d'erreur; vous devez ajouter validateRequest="false"
dans la directive @Page en haut (omise dans votre exemple) ou dans web.config.
Notez que si vous utilisez .net 4, vous devez revenir au mode validation à partir de la version 2.0, en modifiant légèrement le fichier web.config et en ajoutant:
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
Voir cet article MSDN sur requestValidationMode pour plus d'informations sur requestValidationMode.
Votre problème est que la valeur de l'un de vos champs (textboxError) inclut des balises de style XML ou HTML, qui sont par défaut interdites pour éviter aux développeurs de présenter des problèmes de sécurité potentiels dans leurs applications.
La solution est donnée dans le message d'erreur; vous devez ajouter
[HttpPost]
[ValidateInput(false)]
Dans le contrôleur
J'ai trouvé la solution suivante qui vous permet de ne désactiver que la validation sur un seul champ! (je ne voudrais pas le désactiver pour la page entière)
vb.net:
Public Class UnvalidatedTextBox
Inherits TextBox
Protected Overrides Function LoadPostData(postDataKey As String, postCollection As NameValueCollection) As Boolean
Return MyBase.LoadPostData(postDataKey, System.Web.HttpContext.Current.Request.Unvalidated.Form)
End Function
End Class
c #:
public class UnvalidatedTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
return base.LoadPostData(postDataKey, System.Web.HttpContext.Current.Request.Unvalidated.Form);
}
}
Maintenant, utilisez simplement <prefix:UnvalidatedTextBox id="test" runat="server" />
au lieu de <asp:TextBox
et il devrait autoriser tous les caractères (parfait pour les champs de mot de passe!)
cela a juste fonctionné pour moi ...
[HttpPost, ValidateInput(false)]
public ActionResult updateContact(FormModel model)
{
//contents
}