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>
网络上有几篇类似的帖子,但其中 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>