2015-02-07 59 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

相关问题