2010-07-14 53 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

相關問題