WCF配置错误

时间:2015-02-20 15:45:54

标签: c# wcf config

网上有几个类似的帖子,但似乎没有一个对我有用!

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

  

下载时出错   ' http://localhost:1940/MyService.svc/_vti_bin/Listdata.svc/ $元数据'   请求失败,HTTP状态为404:Not Found。元数据包含   无法解决的引用:   ' http://localhost:1940/MyService.svc&#39 ;.远程服务器返回了   错误:(405)方法不允许。

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

调用错误中的任何一个网址都会给我一个404.

代码在服务器上正常运行,但不能在本地运行。但是我需要添加一个函数。

来自服务器的配置似乎是相同的,除了它使用完整的命名空间合同和类名,但是当我在本地项目中尝试它时,这对我不起作用。

配置的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

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

到目前为止我找到的所有建议都不同,似乎没有任何建议。

非常感谢任何帮助!

[编辑]

没有明显的理由我可以理解为什么这不起作用。

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

拥有一个好人。

[/编辑]

3 个答案:

答案 0 :(得分:1)

在您的web.config文件中对<remove name="Documentation"/>内的<webServices>或密钥进行评论

<webServices>
      <protocols>
        <!--<remove name="Documentation"/>-->
      </protocols>
    </webServices>

答案 1 :(得分:0)

根据您发布的内容很难说清楚。但看起来你缺少绑定信息:

<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" />

答案 2 :(得分:0)

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

与第一个相同的配置。

如果我有时间,我很想知道两者之间的差异是什么,但是现在我很高兴它有效!