2010-07-14 31 views
1

如果另一个网站提出后到我的ASP.NET MVC 2的地盘,我怎么能抓住它?我需要对路线做任何事吗?ASP.NET MVC-2如何从另一个网站接收POST?

如其他网站做到这一点:

string url = "https://mvc2-site.com/TestReceive"; // that's my site's controller action 

NameValueCollection inputs = new NameValueCollection(); 
inputs.Add("SessionId", "11111"); 
System.Net.WebClient Client = new WebClient(); 
byte[] result = Client.UploadValues(url, inputs); 

我如何收到POST上我的网站?我曾尝试:

public ActionResult TestReceive(FormCollection fc) {} // doesn't get hit 

public ActionResult TestReceive(string SessionId) {} // method gets hit but session id is null 

public ActionResult TestReceive() 
{ 
    var param = ControllerContext.RouteData.Values["parameter"].ToString(); // Values["parameter"] is null 
} 

我不要管其他的网站,它必须是一个POST(而不是Web服务或其他任何东西)

至于另外一个奇怪的他们将发布约10变数,但也有一些可选,所以它们可能不在POST数据中。

+0

固定错字 - 其他网站使用的是正确的URL http://mvc2-site.com/Controller/TestReceive – 2010-07-14 09:25:37

+0

你得到它的工作使用Web客户端与2名PARAMS?我不能让公共字符串指数(串inputSegments,串cmdSubmit)workingusing TheWebClient.UploadValues() – VinnyG 2011-02-16 14:58:46

回答

1
[HttpPost] 
public ActionResult TestReceive(string sessionId) 
{ 
    ... 
} 

也因为没有在URL中指定控制器,你应该确保包含此动作控制器处于路由默认的控制器。

+0

我试过一个,和的sessionId为空 - 不知道我做错了什么?但我现在只是重新测试,而且再次为空。我也确保正确匹配SessionId参数的情况。上面的网址是一个例子,真正的有/控制器/操作。 – 2010-07-14 09:22:23

+0

@JK,这种情况并不重要。我刚刚使用默认项目模板(默认路由)测试了它,它工作得很好。 – 2010-07-14 09:23:10

+0

我只是用<形式行动=“..等等..”方法=‘POST’><输入ID =‘会话ID’>一个纯HTML文件测试它。我会看看有没有使用Web客户端有差别(它不应该) – 2010-07-14 09:31:43

相关问题