从同一主机上的子域访问时未找到 WCF 错误

Posted

技术标签:

【中文标题】从同一主机上的子域访问时未找到 WCF 错误【英文标题】:WCF not found error when accessing from subdomain on same host 【发布时间】:2012-10-16 23:02:13 【问题描述】:

当我从本地机器访问服务时,一切正常。但是,当我在子域站点上托管 silverlight 应用程序时,我没有得到任何响应。 Silverlight 应用程序是在同一个子域上还是在不同的子域上都没有关系。什么都没有发生。

这是我的服务的 web.config 文件:

    <?xml version="1.0"?>
    <configuration>

     <system.web>
      <compilation debug="true" targetFramework="4.0" />
     </system.web>
     <system.serviceModel>

    <services>
      <service behaviorConfiguration="Metadata" name="IVA_SL5_WCFservice.Service1">
        <endpoint address="http://subdomain.website.com/INA-inv_s/Service1.svc" binding="basicHttpBinding"
          bindingConfiguration="BasicHttpBinding_Service1" contract="IVA_SL5_WCFservice.Service1" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <timeouts closeTimeout="00:10:00" openTimeout="00:10:00" />
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_Service1" closeTimeout="00:25:00"           openTimeout="00:01:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647"
          maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Metadata">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
   <!-- <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> -->
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <!--
  <system.diagnostics>
    <sources>

这是来自 silverlight 应用程序的 ClientConfig 文件:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_Service1" closeTimeout="00:25:00"
                openTimeout="00:25:00" sendTimeout="00:25:00" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://subdomain.website.com/IVA-inv_s/Service1.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Service1"
            contract="IVA_Service.Service1" name="BasicHttpBinding_Service1" />
    </client>
</system.serviceModel>
</configuration>

我像这样在 silverlight 应用程序上调用服务...

Service1Client client;
client = new IVA_Service.Service1Client("BasicHttpBinding_Service1");//"BasicHttpBinding_Service1");

我已经搞砸了好几天了......请帮忙!

【问题讨论】:

您可以使用配置中的地址在浏览器中提取服务吗? 是的,只要我在本地机器上调试 silverlight 应用程序,我就可以正常访问服务而不会出现任何错误。当我托管它时,什么都没有发生。 【参考方案1】:

在声明服务时尝试添加绝对 URI

new IVA_Service.Service1Client("BasicHttpBinding_Service1",
                            (new Uri(Application.Current.Host.Source,"../Service1.svc")).AbsoluteUri);

【讨论】:

以上是关于从同一主机上的子域访问时未找到 WCF 错误的主要内容,如果未能解决你的问题,请参考以下文章

apache 虚拟主机子域只能由 localhost 访问

DNS解析与Bind的使用——子域授权转发及访问控制列表配置

curl: (6) 访问子域时无法解析主机

将 $.getJSON() 与同一子域上的机器一起使用?

Firebase主机在同一个项目中支持多少个域名(不是子域名)?

如何使用 GKE 启用子域