【发布时间】:2014-09-11 18:41:15
【问题描述】:
好的,假设我有这 2 个类:
namespace CreeContact.CSBDObject.Object
{
public class BaseObject
{
}
}
namespace CreeContact.CSBDObject.Object
{
public class TestObject : BaseObject
{
public string name;
public TestObject()
{
name = "Default";
}
}
}
我有一个创建对象并返回它的 wcf 服务:
namespace CreeContact.WebServices
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Object
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public TestObject createobject()
{
TestObject objecttocreate = new TestObject();
return objecttocreate;
}
}
}
这是我用 jquery 调用它的方式:
$.getJSON("WebServices/Object.svc/createobject", function (data) {
alert(data.d.name);
});
当我执行这样的代码时:一切正常 - 警报显示“默认”。
但是假设我修改了这部分:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public TestObject createobject()
{
TestObject objecttocreate = new TestObject();
return objecttocreate;
}
对此:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public BaseObject createobject()
{
BaseObject objecttocreate =(BaseObject) new TestObject();
return objecttocreate;
}
我只是将创建的对象的类型更改为他的父对象的类型。
现在我在 javascript 中收到此错误:net::ERR_EMPTY_RESPONSE。
我做了验证,在 wcf 服务中创建对象没有错误。 Jquery 得到结果时出现错误。
其他信息:
这是为原始请求返回的对象:
这是当类型被定义为父对象时返回的对象:
【问题讨论】:
-
错误来自 javascript,因为没有返回响应。我会调查您的
createobject()方法以确定为什么没有返回任何内容。 -
在浏览器控制台网络选项卡中检查实际请求本身,可以查看返回或未返回的内容
-
我编辑了问题
-
在浏览器中显示实际的网络响应,而不是您在 Visual Studio 后端看到的内容。我怀疑您的问题是您的对象被序列化为没有属性的
BaseObject,因此您得到一个空响应。
标签: c# javascript jquery wcf