Javascript NET中的ajaxpost

Javascript NET中的ajaxpost,javascript,jquery,.net,ajax,Javascript,Jquery,.net,Ajax,我有以下javascript AJAX请求,它可以工作: $.ajax({ type: "POST", url: requestUrl, data: { var1: 'value1', var2: 'value2', var3: 'value3' }, xhrFields: { withCredentials: true }, dataType: "json", cro

我有以下javascript AJAX请求,它可以工作:

$.ajax({
    type: "POST",
    url: requestUrl,
    data: {
        var1: 'value1',
        var2: 'value2',
        var3: 'value3'
    },
    xhrFields: {
        withCredentials: true
    },
    dataType: "json",
    crossDomain: true,
    complete: function (jqXhr, textStatus) {
        if (jqXhr !== undefined && jqXhr !== null && jqXhr.statusText === "OK") {
            alert("Request Success" + jqXhr.responseText);
        } else {
            alert("Request Failed" + (jqXhr.responseText || textStatus));
        }

    }
});
我想用.NET做同样的事情

我尝试了以下方法:

string result = string.Empty;
try
{
    using (var client = new WebClient())
    {
        client.Credentials = new NetworkCredential("userName", "password");

        var values = new NameValueCollection();
        values["var1"] = "value1";
        values["var2"] = "value2";
        values["var3"] = "value3";

        var response = client.UploadValues(requestUrl, values);

        result = Encoding.Default.GetString(response);

    }
}
catch (Exception exception)
{
    Console.WriteLine("Error=" + exception.Message);
}

Console.WriteLine("result=" + result);
但是,我得到一个内部服务器错误

如何重新创建跨域请求?是否要设置特定的标题

WebException详细信息:

响应:“远程服务器返回错误:(500)内部服务器错误。” 标题: 持久身份验证:true 内容长度:5143 缓存控制:专用 内容类型:text/html;字符集=utf-8 日期:2015年7月14日星期二12:03:21 GMT 服务器:Microsoft IIS/7.5 X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

如果看不到错误,很难说到底发生了什么,但如果您怀疑这是CORS问题,则可以添加以下标题:

var data = JsonConvert.SerializeObject(
    new
    {
        Prop1 = 1,
        Prop2 = "data 2"
    });

using (var client = new WebClient { UseDefaultCredentials = true })
{
    client.Headers.Add("access-control-allow-origin", "*");
    client.Headers.Add("access-control-allow-methods", "GET, POST, OPTIONS");
    client.Headers.Add("access-control-allow-headers", "Authorization, content-type, accept");
    client.Headers.Add(HttpRequestHeader.ContentType, "application/json; charset=utf-8");
    client.UploadData("your url", "POST", Encoding.UTF8.GetBytes(data));
}

服务器错误说明了什么?我没有访问服务器的权限。它是由另一个开发团队托管的服务。请使用Fiddler2之类的工具手动尝试该服务,以创建请求并查看服务器实际接受的内容。或者,您可以在
$.ajax
请求中设置
错误处理程序,并检查其返回的属性。不管怎样,你都无法在不知道问题是什么的情况下解决任何问题。@TrueBlueAussie-我有Fiddler2,我可以看到请求在AJAX中通过。我应该注意什么标题?我试过了,但没用。NET代码的Fiddler在500之前显示了两个401。凭据似乎未通过:401-未经授权:由于凭据无效,访问被拒绝您知道服务器使用的身份验证类型(基本、承载令牌等)吗?您发送凭据的方式是使用基本身份验证,但您所联系的服务器可能需要更多。同样,在ajax代码中,您发送的是json,但在C代码中,您发送的是名称-值对。确保发送一个json对象,并将其添加到标题:“内容类型”、“应用程序/json”。我尝试将数据发送为json,并将内容类型设置为“应用程序/json”,但遇到了相同的错误。IIS服务器承载的网站已启用windows身份验证。由于这是windows身份验证,请尝试以下操作:client.Credentials=CredentialCache.DefaultCredentials;或者在using语句中:using(var client=new-WebClient{usedaultcredentials=true})尝试了DefaultCredentials并得到了相同的错误。我已经更新了问题中的错误和标题