You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET WebService被Android App调用返回404,单独访问正常

排查Android Volley调用.NET WebService返回404的问题

结合你描述的情况——浏览器和Postman能正常访问,但Volley请求返回404,我整理了几个最可能的排查方向,咱们一步步来:

1. 确认IIS Express的绑定范围是否覆盖模拟器请求

虽然浏览器和Postman能通过localhost访问,但Android模拟器用10.0.2.2映射主机localhost,这时候需要确保IIS Express允许非本地回环的请求:

  • 打开IIS Express的applicationhost.config文件(路径一般是%userprofile%\Documents\IISExpress\config),找到你的WebService站点配置,检查<bindings>节点是否包含类似http://*:61969/或http://0.0.0.0:61969/的绑定。如果只有http://localhost:61969/,模拟器的请求会被拒绝,返回404。
  • 修改绑定后必须重启IIS Express,配置才会生效。Jexus Manager的设置有时候需要重启服务才能同步。

2. 对比Volley与Postman的请求细节是否完全一致

浏览器和Postman可能自动处理了一些请求头或参数,但Volley需要手动配置,很容易漏掉关键信息:

  • 请求方式与SOAPAction头:.NET传统ASMX WebService通常要求POST请求,并且需要指定SOAPAction头(比如http://tempuri.org/YourWebMethodName)。检查Postman的Headers里是否有这个字段,Volley代码里有没有添加?
  • URL路径准确性:仔细核对Volley里的URLhttp://10.0.2.2:61969/ws/test和Postman里的路径是否完全一致——有没有多/少斜杠?是不是把.asmx文件名写错了(比如实际是TestService.asmx/Test,你写成了ws/test)?
  • 请求体格式:如果是SOAP请求,Postman里的XML格式是否正确?Volley发送的Body有没有和Postman完全一致?

3. 验证CORS配置是否适配.NET WebService

你提到开启了CORS,但传统ASMX和ASP.NET Core的CORS配置逻辑不同,容易踩坑:

  • 如果是ASMX服务,需要在Web.config的<system.webServer>节点下添加CORS响应头:
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
        <add name="Access-Control-Allow-Headers" value="Content-Type,SOAPAction" />
      </customHeaders>
    </httpProtocol>
    
  • 另外,Volley会先发送OPTIONS预检请求,如果ASMX没有处理OPTIONS的逻辑,会直接返回404。这种情况下需要添加一个自定义HttpHandler来处理OPTIONS请求,或者在Global.asax里拦截OPTIONS请求并返回200。

4. 排查主机防火墙与模拟器网络问题

  • 检查主机的Windows防火墙,是否允许61969端口的入站请求。本地回环请求(浏览器/Postman)不会触发防火墙拦截,但模拟器的请求属于外部请求,可能被防火墙拒绝,导致404。
  • 试试用主机的实际局域网IP(比如192.168.1.100)代替10.0.2.2,如果能访问,说明模拟器的网络映射可能有问题;如果还是不行,回到前面的绑定和配置排查。

5. 确认WebService端点的正确性

检查你的.NET WebService代码:

  • 目标方法是否标记了[WebMethod]属性?
  • 如果使用了路由配置,ws/test是否正确映射到对应的WebService方法?比如是否在路由配置里定义了这个路径,或者是否是.asmx文件的正确访问路径?

建议先从URL路径和IIS绑定入手排查,这是这类问题最常见的根源。如果还是不行,抓包对比Volley和Postman的请求差异,能更快定位问题。

内容的提问来源于stack exchange,提问作者mvas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:22:59