首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布到Json 500服务返回错误500

发布到Json 500服务返回错误500
EN

Stack Overflow用户
提问于 2012-11-22 08:31:56
回答 4查看 3K关注 0票数 0

我有标准的asmx webservice返回Json:

代码语言:javascript
复制
private void ReturnUser(string name)
{
    User user = new User(name);
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
    MemoryStream stream = new MemoryStream();
    serializer.WriteObject(stream, @object);
    string jsonString = Encoding.UTF8.GetString(stream.ToArray());
    stream.Close();

    HttpContext.Current.Response.AddHeader("ContentType", "application/json");
    HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
    HttpContext.Current.Response.Write(jsonString);
    HttpContext.Current.Response.End();
}

另一方面,我想尝试the服务正在运行,所以我尝试调用POST:

代码语言:javascript
复制
string data = "name=test";
byte[] dataStream = Encoding.UTF8.GetBytes(data);

WebRequest request = WebRequest.Create("http://tempuri.org/External.asmx?op=ReturnUser");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = dataStream.Length;
Stream reqStream = request.GetRequestStream();
reqStream.Write(dataStream, 0, dataStream.Length);
reqStream.Close();
WebResponse response = (HttpWebResponse)request.GetResponse();

Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string json = reader.ReadToEnd();
stream.Close();
reader.Close();

Console.Write(json);
Console.Read();

但是我得到了错误500。来自浏览器的是the服务,它像一个魔符一样运行:(

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-24 00:22:06

最后,我解决了这个问题,这可能对其他人有帮助:

代码语言:javascript
复制
string data = "name=test";
byte[] dataStream = Encoding.UTF8.GetBytes(data);

WebRequest request = WebRequest.Create("http://tempuri:org/External.asmx/ReturnUser");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
Stream stream = request.GetRequestStream();
stream.Write(dataStream, 0, dataStream.Length);
stream.Close();
WebResponse response = request.GetResponse();

Stream respStream = response.GetResponseStream();
StreamReader reader = new StreamReader(respStream);
string json = reader.ReadToEnd();
stream.Close();
reader.Close();

感谢所有人

票数 0
EN

Stack Overflow用户

发布于 2012-11-22 08:43:19

在许多服务器上,500系列错误都是安全或权限错误。由于出现了500错误,因此至少可以完全连接到服务器。

显然,您的代码永远不会被调用,因为它不能生成500错误--所以您所依赖的服务器层正在执行此操作。这闻起来像是许可或安全。

服务器应该发回说明正在发生的事情的文本。有关更多信息,请查看响应正文。它也可能有帮助的本地日志记录。

我不得不用.NET代码解决类似的问题。我需要通过HTTP从服务器获取信息,但这需要身份验证。我不能使用任何集成的安全方法,如Kerberos或基本身份验证,因为我的服务器使用了基于cookie (有时称为基于表单)的身份验证。

如果你有这个问题,这可能会有帮助:.NET - Consuming HTTP services on (Domino) server with form based authentication

我的服务器是Domino,但是这个想法适用于任何HTTP服务器。

票数 1
EN

Stack Overflow用户

发布于 2012-11-23 16:43:04

尝尝这个,

代码语言:javascript
复制
WebRequest request = WebRequest.Create("http://tempuri.org/External.asmx");
request.Headers.Add("SOAPAction", "\"http://tempuri.org/ReturnUser\"");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13504257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档