2015-02-07 113 views
0

我有一個C#winforms應用程序,我試圖調用一個Web服務,我控制代碼(兩端)。我知道Web服務是好的,因爲我可以從jquery中調用它,沒有問題,並返回有效的json。但是,當我從C#調用它,我得到這個錯誤:「遠程服務器返回一個錯誤:(500)內部服務器錯誤。」在調試器中,我無法收集到比這更多的細節。從C#JSON發佈失敗,500錯誤

這裏是我的C#調用程序代碼:

private string GetMemberCheckInData() { 
    string response = string.Empty; 
    string fullURL = RootServiceURL + "MemberCheckIn"; 
    var httpWebRequest = (HttpWebRequest) WebRequest.Create(fullURL); 
    httpWebRequest.ContentType = "text/json"; 
    httpWebRequest.Method = "POST"; 

    using(var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { 
     string json = "{\"scanCode\":\"" + APIKey + "\"," + 
      "\"siteID\":\"2\"," + 
      "\"revenueGroupID\":\"0\"," + 
      "\"employeeID\":\"12345\"}";; 

     streamWriter.Write(json); 
     streamWriter.Flush(); 
     streamWriter.Close(); 

     var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse(); 

     using(var streamReader = new StreamReader(httpResponse.GetResponseStream())) { 
      response = streamReader.ReadToEnd(); 
     } 
    } 

    return response; 
} 

這裏是正在發送文字JSON:

{"scanCode":"***8G9V3MA39H0N****","siteID":"2","revenueGroupID":"0","employeeID":"12345"} 

這裏是C#的Web服務代碼(正常工作從jQuery的調用時) :

[WebMethod] 
public void MemberCheckIn(string scanCode, int siteID, int revenueGroupID, int employeeID) 
{ 
    ...code is never reached... 
} 

Web服務功能從未實際進入;我用調試器證實了這一點。當我從jQuery中調用它時,我可以直接調試它。所以看起來這個請求被.net運行時或者IIS拒絕了。

任何想法我做錯了什麼?

回答

1

您的webmethod期待您傳遞參數。

string fullURL = RootServiceUrl + "MemberCheckIn?scanCode=X&siteID=1...etc. 
+0

我剛剛試過,但得到了相同的500錯誤。我也想知道streamWriter.Write(json),它顯然應該只是發送一個空字符串?我嘗試發送一個空字符串,並試圖完全刪除該行。所有相同的結果,500錯誤。 – HerrimanCoder 2015-02-07 13:59:16

+0

檢查您的fullURL路徑。由於我看不到RootServiceUrl,您可能會遇到路徑問題。 – 2015-02-07 14:17:12

+0

我放棄了json的東西,做了一個更傳統的帖子,並且工作。但你說得對,簡單的NVP工作正常。 – HerrimanCoder 2015-02-07 14:33:36