【问题标题】:ASMX method returns XML to clientside instead of JSONASMX 方法返回 XML 到客户端而不是 JSON
【发布时间】:2020-03-30 09:05:46
【问题描述】:

在 ASMX 中编写了一个 Web 方法,以将 JSON 数据返回给 Angular 应用程序。这就是 Webmethod 的样子

    [WebMethod]        
    [ScriptMethod(UseHttpGet =true,ResponseFormat =ResponseFormat.Json)]
    public MyProjects getReport(int reportId)
    {
    }

这是我从 Angular 中调用它的方式

this.client.get('http://localhost:51071/webservice1.asmx/getReport?reportId=596', 
{ withCredentials: true, responseType: 'text' })
   .subscribe( (data) => console.log(data));

但问题是 Angular 应用程序接收到的数据是 XML 格式的。这就是我在那里指定文本的原因。如果我在那里指定 json,它当然会触发错误,说无效的 json 数据。

我完全不知道我做错了什么或者要改变什么来获得纯 JSON

这是控制台输出的样子

<?xml version="1.0" encoding="utf-8"?>
<Projects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <Success>true</Success>
  <TotalRecords>391</TotalRecords>
  <Data>
    <ProjectData>
      <ProjectCode>E6012</ProjectCode>

【问题讨论】:

标签: c# angular asmx webmethod angular-httpclient


【解决方案1】:

您确定您的 IIS 配置吗?

打开 IIS 管理器 显示 IIS 服务器的属性 单击 MIME 类型,然后找到带有 JSON 扩展名的行: 文件扩展名:.json MIME 类型:application/json

如果找不到,请创建它。

返回 IIS 服务器的属性 单击处理程序映射 添加脚本映射 请求路径:*.json 可执行文件:C:\WINDOWS\system32\inetsrv\asp.dll 名称:JSON

希望对你有帮助

【讨论】:

  • 我的是iis express应用,不是iis。 iis epress 是否有任何特定的配置?
  • 使用以管理员身份运行选项打开 Visual Studio 命令提示符。导航到 IIS Express 目录 (C:\Program Files (x86)\IIS Express) 运行以下命令:appcmd set config /section:staticContent /+[fileExtension='JSON',mimeType='application/x-javascript']
猜你喜欢
  • 2012-04-12
  • 2020-06-02
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
相关资源
最近更新 更多