WCF Web 服务错误

Posted

技术标签:

【中文标题】WCF Web 服务错误【英文标题】:WCF WebService Error 【发布时间】:2014-01-08 06:28:33 【问题描述】:

错误

错误:无法从 localhost:81/WebServices/Legacy.svc 如果这是 Windows (R) 请访问您有权访问的通信基础服务 检查您是否已在指定位置启用元数据发布 地址。有关启用元数据发布的帮助,请参阅 MSDN 文档位于 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流 错误 URI:localhost:81/WebServices/Legacy.svc 元数据 包含无法解析的引用: 'localhost:81/WebServices/Legacy.svc'。

我的 Web.Config

<system.serviceModel>
    <services>
        <service name="Web.WebServices.Legacy" behaviorConfiguration="serviceBehaviorsZero">
          <endpoint address=""
                      name="SspService"
                      binding="basicHttpBinding"
                      bindingConfiguration="basicHttpBindingZero"
                      contract="Web.WebServices.ILegacy" />

          <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
        </service>
    </services>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttpBindingZero">
                <security mode="None">
                </security>
            </binding>
        </basicHttpBinding>

    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="serviceBehaviorsZero">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

为什么我无法使用 WCF 测试客户端访问我的网络服务?

当我在浏览器中通过 URL localhost:81/WebServices/Legacy.svc 访问时 我收到这个错误 文件名、目录名或卷标语法不正确。

更新:我的 .svc 文件代码

<%@ ServiceHost Language="C#" Debug="true" Service="Web.WebServices.Legacy" CodeBehind="Legacy.svc.cs" %>

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
    public class Legacy : ILegacy
    
        public string DoWork()
        
            return "https";
        
    

【问题讨论】:

你能显示.svc文件的内容吗? 您有 mexHttpsBinding - 可能将其更改为 mexHttpBinding,或者将测试客户端更改为指向本地 HTTPS 端点? @Chris: 标记: C# 代码:命名空间 Web.WebServices [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] public class Legacy: ILegacy public string DoWork() return "OK"; 【参考方案1】:

    将简单的文件放在网站目录(hello.html)上,并检查它是否可以访问(helloworld.html)

    你好世界 你好世界!!!

如果不工作 - 检查您在 IIS 上的绑定设置,以及服务及其应用程序池是否已打开。

    在 IIS 配置中,选择“功能视图”,然后转到“目录浏览”+启用。 在 svc 的末尾放置:...svc?wsdl 首先检查您自己的本地环境。一切正常后,您可以从网络上查看。 在 Visual Studio 上,您应该通过创建新网站(新文件夹)来完成基本操作,并将结果复制到网站(包括 web.config) - 有一个默认源代码。您可以向服务添加新功能(即 helloworld,它返回一个字符串,并在 iservices 上引用它)。 如果没有创建 svc 文件(旧 VS 版本) - 您可以创建自己的文本文件,然后复制+粘贴来修复 svc 文件...在网站上,应该有 app_code 和 app_data 文件夹。

希望有所帮助。 祝你好运!!!

【讨论】:

以上是关于WCF Web 服务错误的主要内容,如果未能解决你的问题,请参考以下文章

WCF Web 服务错误:“服务端点绑定不使用 HTTP 协议”?

调用 Sitefinity WCF Web 服务时出现错误 401

大型 WCF Web 服务请求因 (400) HTTP 错误请求而失败

调用 WCF Web 服务时出现错误的 Json 响应

WCF - 远程服务器返回意外响应:(400)错误请求

WCF IIS svcutil 错误