从同一主机上的子域访问时未找到 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
DNS解析与Bind的使用——子域授权转发及访问控制列表配置