2013-10-22 39 views
0

我想在现有的asp.net web窗体应用程序中创建一个web服务,但它不工作。下面的代码描述服务:添加一个Web服务(ASMX)到现有的asp.net窗体网站

[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服务,浏览器尝试下载服务,而不是执行它的:

service

另外,如果我尝试引用另一个项目的服务,我收到以下错误:

url http://localhost:64925/services/TestService.asmx上的文档未被识别为已知文档类型。 从每个已知类型的错误消息可能会帮助您解决问题: - 从XML架构“的报告是'的文档格式不能识别(内容类型是文本/ html;字符集= UTF-8

我的猜测是,这与'服务'目录没有正确配置有关,但如果将服务添加到网站的根目录,我会得到同样的问题。

我尝试过aspnet_regiis .Net 2 我使用Visual Studio 2012和IIS快递。

更新: 看来,该网站也被引用的SharePoint Web服务,我刚才发现的错误的详细信息如下奇怪的消息:

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

+0

正如它所说,这是无法识别的内容类型。因此,类型'asmx'没有在IIS中正确注册,所以当浏览器请求链接时,服务器认为'这到底是什么 - 我将它作为一个纯文件',因此下载。 – Stevo

+0

@Stevo谢谢,但我该如何解决它与IIS Express运行Visual Studio 2012? – philreed

+0

不幸的是我不能提供具体的指导(因为我不知道)。我首先看看IIS配置。正如你所说的那样,它可以在网站外的全新Web服务上运行,并且工作正常,所以IIS配置中的某些内容无法正常工作。我会查看现有站点与现有设备之间的差异,并逐一查找故障查找设置。对不起,我无法提供更多帮助。 – Stevo

回答

0

我已经成功地找到了答案。

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

只需在该逻辑中添加一个过滤器以排除.ASMX文件类型即可解决我的问题。

感谢所有花时间尝试帮助的人。

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> 

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

+0

干杯,我也尝试过一个空白的web服务项目以外的现有网站,工作正常。我认为它必须是特定于配置或现有网站的内容。处理程序在web.config中看起来很好。我认为它与SharePoint有关,已经更新了这个问题。 – philreed

相关问题