我正在尝试连接到使用城堡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"));
至于客户端配置 - 我正在使用向导添加服务。
答案 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链接到博客文章 - 此示例也没有发布元数据。
我会对此代码做些什么来使其工作?如果我能看到我可以自己创作。
瓦特://