我在asp.net上开发了一个web服务,我希望它返回一个json字符串而不是xml文件。我已经在我的代码中设置了以下内容,并通过互联网上的多个来源进行查看,并且我尝试了但是“错误”不断出现。Webservice返回xml而不是json如何解决?
dao.asmx
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getLosKPIDataYear()
{
List<Object> sqlObject = new List<Object>();
String connectionString = DAO.GetConnectionString();
string sqlQuery = string.Empty;
var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
SqlConnection sqlConn = new SqlConnection(connectionString);
try
{
sqlQuery = "select LOSYearYear, LOSYearLOS from LOSYear";
sqlConn.Open();
SqlDataReader reader = null;
SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConn);
reader = sqlCommand.ExecuteReader();
while (reader.Read())
{
sqlObject.Add(new { LOSYearYear = reader["LOSYearYear"].ToString(), LOSYearLOS = reader["LOSYearLOS"].ToString() });
}}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
sqlConn.Close();
var resultData = new { e = sqlObject.ToArray() };
ContentResult result = new ContentResult();
result.Content = serializer.Serialize(resultData);
result.ContentType = "application/json";
String myResult = result.Content;
return myResult;
}
的web.config
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<system.webServer>
<handlers>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
<modules runAllManagedModulesForAllRequests="true"/>
<staticContent>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
</system.webServer>
我应该怎么做才能解决这个问题?提前致谢!
我可以建议你切换到WCF服务?开始实施/使用RESTful服务有一个很好的例子。使用WCF你不需要做任何你自己的序列化。 http://msdn.microsoft.com/en-us/magazine/dd315413.aspx – 2013-04-08 09:11:13