gpt4 book ai didi

部署后 WCF Web 服务不工作

转载 作者:行者123 更新时间:2023-12-04 05:48:46 24 4
gpt4 key购买 nike

我正在尝试创建一个 WCF Web 服务,该服务将允许其他应用程序通过向该服务 url 发出 http 请求来检索字符串。我尝试在 IIS 中发布服务,当尝试使用 url 浏览它时,它说

' The resource cannot be found'

当我检查文件夹的路径时,我使用了 url,
我得到了错误
'No protocol binding matches the given address 
'http://localhost:xxxx/WcfSampleLibrary/Service1/mex.'
Protocol bindings are configured at the Site level in IIS or WAS configuration'

这是发布文件夹的目录路径:
C:\inetpub\wwwroot\WcfServices\WcfSampleLibrary\WcfSampleLibrary.Service1
C:\inetpub\wwwroot\WcfServices\WcfSampleLibrary\Web.config
C:\inetpub\wwwroot\WcfServices\WcfSampleLibrary\bin\WcfSampleLibrary.dll

网页配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfSampleLibrary.Service1" behaviorConfiguration ="mex">
<host>
<baseAddresses>
<add baseAddress = "http://192.xxx.x.xxx/WcfSampleLibrary/Service1/" />
</baseAddresses>
</host>
<!-- Service Endpoints -->
<endpoint address =""
binding="wsHttpBinding" contract="WcfSampleLibrary.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<!-- Metadata Endpoints -->
<endpoint address="http://localhost:xxxx/WcfSampleLibrary/Service1/mex" name="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mex">
<serviceMetadata httpGetEnabled="false"/>
<!-- 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="true" />
</behavior>
</serviceBehaviors>
</behaviors>

最佳答案

在 IIS 托管的 WCF 服务中,您无需在地址中指定完整的 URI。 IIS 决定地址。还有 baseAddresses在 IIS 中托管时完全忽略元素(因此将其从 Web.config 中删除)。服务的基地址由放置 wcf 服务的网站和虚拟目录决定。执行如下操作:

  <endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>

那么您的地址将是 http://IIS.SERVER/SiteName/Folder/WcfSampleLibrary.Service1.svc .如果您不确定地址是什么,请使用您的 IIS 管理工具,选择其中包含该服务的站点,右键单击并选择“高级”->“浏览站点”。

另外,我会在您的 mex 上打开 httpGetEnabled行为——如果您想发布您的 WSDL。这使您在开发服务时更容易使用它:
<behaviors>
<serviceBehaviors>
<behavior name="mex" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>

httpGetEnabled打开后,浏览到您的服务 URI 将为您提供查看 WSDL 的选项。

关于部署后 WCF Web 服务不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com