1

我正在尝试在现有的 asp.net Web 表单应用程序中创建 Web 服务,但它不起作用。以下代码描述了该服务:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class TestService: System.Web.Services.WebService {

    public TestService() {

        //Uncomment the following line if using designed components 
       //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld(string name) {
        return "Hello " + name;
    }    
}

当我尝试测试此 Web 服务时,浏览器会尝试下载该服务而不是执行它:

服务

此外,如果我尝试从另一个项目中引用该服务,我会收到以下错误:

url 处的文档http://localhost:64925/services/TestService.asmx未被识别为已知文档类型。来自每种已知类型的错误消息可能会帮助您解决问题: - 来自“XML Schema”的报告是“无法识别文档格式(内容类型是 'text/html; charset=utf-8

我的猜测是,这与未正确配置“服务”目录有关,但如果将服务添加到站点的根目录,我会遇到同样的问题。

我已经为 .Net 2 和 4 尝试过 aspnet_regiis 我正在使用带有 IIS Express 的 Visual Studio 2012。

更新: 该网站似乎也在引用 SharePoint Web 服务,我刚刚在错误详细信息中发现了以下奇怪的消息:

下载时出错http://localhost:64925/services/TestService.asmx/_vti_bin/ListData.svc/$metadata。请求失败,HTTP 状态为 404:未找到。

4

2 回答 2

2

我设法找到了答案。

Global.asax 文件有一些自定义代码来重写Application_BeginRequest事件处理程序中的 URL,并且此代码未正确处理对 .ASMX 文件的请求。

只需向此逻辑添加过滤器以排除 .ASMX 文件类型即可解决我的问题。

感谢所有花时间尝试帮助解决此问题的人。

于 2013-10-23T08:44:03.137 回答
0

我刚刚尝试复制该问题,但无济于事。完全按照网站的预期返回。

直接复制您的代码并将其粘贴到 .NET 3.5 Web 表单站点内的空白服务文档中。

你知道它是否在 web.config 文件中创建了正确的处理程序吗?

<httpHandlers>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
  </httpHandlers>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </httpModules>

只是想知道如果它没有告诉浏览器如何正确处理文档,这是否可能是您的问题。

于 2013-10-22T16:17:32.303 回答