WCF 配置错误

WCF Configuration error

网络上有几篇类似的帖子,但其中 none 似乎对我有用!

我有一个 WCF 网络服务,我无法在我的 C# 项目中使用它,因为它给我这个错误:

There was an error downloading 'http://localhost:1940/MyService.svc/_vti_bin/Listdata.svc/$metadata' the request failed with HTTP status 404: Not Found. Metadata contains a reference that cannot be resolved: 'http://localhost:1940/MyService.svc'. The remote server returned an error: (405) Method Not Allowed.

我已经添加了服务引用,但是当我尝试更新时出现此错误。

调用错误中的任一 URL 都会出现 404。

该代码在服务器上运行良好,但在本地无法运行。但是我需要添加一个功能。

除了使用完整的命名空间合同和 class 名称外,服务器的配置看起来是一样的,但是当我在本地项目中尝试时,这对我不起作用。

配置的 ServiceModel 部分如下所示:

<system.serviceModel>
    <services>
      <service name="MyService">
        <endpoint address="" binding="basicHttpBinding" contract="IMyService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

这里有什么明显的错误吗?这针对 .NET 3.5

我尝试了服务名称的不同变体,有完整命名空间的和没有的,有接口名称和 class 名称,或两者都有(如此处所示)。

到目前为止我找到的所有建议都是不同的,none 似乎可行。

如有任何帮助,将不胜感激!

[编辑]

没有明显的原因我明白为什么这不起作用。

我整个周末都在睡觉,周一回来!

祝你一切顺利。

[/编辑]

根据您发布的内容很难判断。但您似乎缺少绑定信息:

<bindings>
            <basicHttpBinding>
                <binding name="basicHttpDefaultBinding" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">
                    <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    <security mode="None">
                        <transport clientCredentialType="None" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>

然后更新

<endpoint address="" binding="basicHttpBinding" contract="IMyService" />

至此

<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpDefaultBinding" contract="IMyService" />

我开始了一个新项目,粘贴了旧项目的代码,一切正常。

与第一个配置相同。

如果我有时间,我很想弄清楚两者之间的区别,但现在我很高兴它能起作用!

在 web.config 文件

中评论 <remove name="Documentation"/><webServices> 中的密钥
<webServices>
      <protocols>
        <!--<remove name="Documentation"/>-->
      </protocols>
    </webServices>