我们需要从外部表单中获取post参数。例如:
第一份申请表 - 表格
<form method="post">
<input type="text" name="privet" value="TestValue" />
<input type="submit" value="submit" />
</form>
第一个应用程序 - 控制器
[HttpPost]
public ActionResult Test(string privet)
{
return Content("Answer: " + privet);
}
第二次申请(外部) - 控制器
WebRequest _wr = WebRequest.Create("http://SomeExternalDomain/Home/Test");
_wr.Method = "POST";
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes("privet=SomeValue");
_wr.ContentType = "application/x-www-form-urlencoded";
_wr.ContentLength = byteArray.Length;
using (Stream dataStream = _wr.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
using (HttpWebResponse _response = (HttpWebResponse)_wr.GetResponse())
{
using (Stream _dataStream = _response.GetResponseStream())
{
using (StreamReader _reader = new StreamReader(_dataStream))
{
return _reader.ReadToEnd();
}
}
}
如果我们在一个应用程序中发送Post,发布数据已接受,但是从外部应用程序发布,丢弃后。 (而不是POST,在方法上来了GET withoud数据)。
在IIS日志中,在两种情况下都注册了POST请求。
2014-02-20 13:59:45 ::1 POST /Home/Test ...
2014-02-20 14:12:41 192.168.15.18 POST /Home/Test ...
哪里可以限制外部帖子请求?谢谢!
答案 0 :(得分:1)
您的代码看起来很好。它可以简化为:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "privet", "SomeValue" },
};
byte[] result = client.UploadValues("http://SomeExternalDomain/Home/Test", values);
return Encoding.UTF8.GetString(result);
}
但我猜这不会解决问题。您似乎已经提到了有关GET请求的内容。也许您的外部应用程序是一个Web应用程序,并且您在发出POST请求后重定向客户端浏览器。