Wcf Facility当前禁用此服务的元数据发布

时间:2010-04-09 14:52:38

标签: wcf castle-windsor

我正在尝试连接到使用城堡wcf工具配置的Wcf服务。

当我在浏览器中访问该服务时,我得到:

Metadata publishing for this service is currently disabled.

其中列出了一些我无法执行的指令,因为配置不在web.config中。

当我尝试使用VS /添加服务引用进行连接时,我得到:

The HTML document does not contain Web service discovery information.
Metadata contains a reference that cannot be resolved: 'http://s.ibzstar.com/userservices.svc'.
Content Type application/soap+xml; charset=utf-8 was not supported by service http://s.ibzstar.com/userservices.svc.  The client and service bindings may be mismatched.
The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..
If the service is defined in the current solution, try building the solution and adding the service reference again.

任何人都知道我需要做些什么才能让它发挥作用?

最终客户端是使用Monotouch编写的iPhone应用程序,如果这很重要 - 所以客户端没有城堡windsor。

欢呼声

瓦特://

以下是该服务的Windsor.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <components>

<component id="eventServices"
               service="IbzStar.Domain.IEventServices, IbzStar.Domain"
               type="IbzStar.Domain.EventServices, IbzStar.Domain"
       lifestyle="transient">
</component>

<component id="userServices"
              service="IbzStar.Domain.IUserServices, IbzStar.Domain"
              type="IbzStar.Domain.UserServices, IbzStar.Domain"
      lifestyle="transient">
</component>

Web.config部分:

 <system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>

</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="IbzStar.WebServices.Service1Behavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above 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>

我的App_Start包含:

 Container = new WindsorContainer(new XmlInterpreter(new ConfigResource()))
            .AddFacility<WcfFacility>()
            .Install(Configuration.FromXmlFile("Windsor.config"));

至于客户端配置 - 我正在使用向导添加服务。

3 个答案:

答案 0 :(得分:0)

根据此处的错误消息:

  

HTML文档不包含Web   服务发现信息。   元数据包含一个引用   无法解决:   'http://s.ibzstar.com/userservices.svc'。

这可能意味着WCF发布其WSDL文件的方式存在问题 - 它通常包含对单独的外部XSD文件的引用,许多客户端无法处理该文件(即使它符合100%标准)

  

内容类型application / soap + xml;   charset = utf-8不受支持   服务   http://s.ibzstar.com/userservices.svc。   客户端和服务绑定可能是   不匹配。   远程服务器返回错误:   (415)无法处理消息   因为内容类型   “应用程序/肥皂+ xml的;字符集= UTF-8'   不是预期的类型'text / xml;   字符集= UTF-8' ..

这似乎表明客户端想要谈论SOAP,而服务器没有配置SOAP(可能用于REST)。

您需要向我们提供有关您的服务器和客户端配置的更多信息!某种地方肯定存在某种不匹配......但是如果没有更多信息,我们所能做的就是猜测....

答案 1 :(得分:0)

services中的web.config部分为空。 Windsor WCF Facility不会消除配置要求;它仍然需要存在,并且需要匹配component的{​​{1}}部分。

quick start开始 - 这一切都需要进入你的web.config:

Windsor.config

答案 2 :(得分:0)

这是更新的配置:

<system.serviceModel>
    <!--<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>-->
    <services>
      <service behaviorConfiguration="userServicesBehaviour" name="userServices">
        <endpoint binding="wsHttpBinding" contract="IbzStar.WebServices.IUserServices" />
        <endpoint binding="basicHttpBinding" contract="IbzStar.WebServices.IUserServices" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="userServicesBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>  
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

我所设置的问题与本网站上的示例相近:

http://mikehadlow.blogspot.com/2008/11/windsor-wcf-integration.html

该zip链接到博客文章 - 此示例也没有发布元数据。

我会对此代码做些什么来使其工作?如果我能看到我可以自己创作。

瓦特://