WebClient UploadString returns html 编码且不发送数据

WebClient UploadString returns html code and does not send data

我正在尝试使用以下代码将一些字符串从服务发送到 webmethod 服务:

private void SendRequest(string filePath, string webService)
{ 
    try
    {
         using (var wb = new WebClient())
         {
             string data = File.ReadAllText(filePath);
             data = "data=" + data;
             string res = wb.UploadString(webService, data);                 
         }
    }
    catch (Exception e)
    {
        logEvents.Write(MyLogClass.LogLevel.Info, "Data not sent " + e.Message);
    }
}        

出于某种原因,我不知道 res returning 了首页的 html 代码。

我之前使用节点执行此操作,我的网络服务会毫无问题地接受字符串 return 200。

web服务的代码开始如下:

[WebMethod]
public static string Data(string data)

我试过以多种方式格式化数据并更改参数和 URL 都很好。问题不在 Web 服务中,因为它可以很好地处理我的节点请求。可能是什么?

尝试明确指定 Headers

using (var wb = new WebClient())
{
    wb.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string data = File.ReadAllText(filePath);
    data = "data=" + data;
    string res = wb.UploadString(webService, /*"POST",*/ data);
}

通过序列化发送的数据并使用 WebRequest 而不是 WebClient 解决了这个问题。

编辑

var webRequest = WebRequest.Create(webService);
                webRequest.Method = "POST";
                webRequest.ContentType = "application/json";
                string data = File.ReadAllText(filePath);
                var jsonObject = new { data };
                var serializedObject = JsonConvert.SerializeObject(jsonObject);
                var bytes = Encoding.ASCII.GetBytes(serializedObject);
                var requestStream = webRequest.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();