使用Autofac通过ChannelFactory注册端点的WCF合约不匹配错误
|
我有一个WCF服务,当被一个简单的MVC应用程序访问时,该服务就可以工作。
当我尝试从与Autofac连接的另一个MVC应用程序在同一终结点上进行呼叫时,出现如下所示的绑定/合同不匹配异常:
内容类型application / soap + xml;
服务http:// localhost:6985 / ProductService.svc不支持charset = utf-8。
客户端和服务绑定可能不匹配。
System.Net.WebException:远程服务器返回错误:(415)不支持的媒体类型。
我有足够的信心确定我的两端没有配置失配,我有信心在不存在Autofac的WCF + MVC组合上测试完全相同的设置。配置设置位于pastebin.com/t7wfR77h上。
因此,我想分析一下我在Autofac中注册依赖项/端点的方式是否有问题...
MVC应用中用于Autofac设置的* Application_Start *代码:
var builder = new ContainerBuilder();
//other registrations...
builder.Register(c =>
new ChannelFactory<IProductService>(
new WSHttpBinding(\"ProductService_wsHttpBinding\"),
new EndpointAddress(\"http://localhost:6985/ProductService.svc\")
)
).SingleInstance();
builder.Register(c =>
{
var factory = c.Resolve<ChannelFactory<IProductService>>();
return factory.CreateChannel();
}
).InstancePerHttpRequest();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
(出于完整性考虑)我在一个只有一个要注入的依赖项的ProductController中使用它,非常简单:
public class ProductController : AsyncController
{
private IProductService _service;
public ProductController(IProductService ps)
{
_service = ps;
}
//...
//later simply call
_service.SomeMethod();
}
没有找到相关结果
已邀请:
1 个回复
购藏盗码韦
这些注册从Web.config收集WCF配置数据。我还注册了代码中定义的端点。为了完整起见,这里是一些相关的客户端Web.config条目:
然后,在我的控制器中,我有如下代码:
单元测试如下所示:
我使用抽象控制器测试基类中定义的单元测试来验证处置:
我还不知道的一件事是,是否同时使用ѭ7和ѭ8提供了足够的处置空间,还是根据An Autofac Lifetime Primer,我是否需要使用ѭ9。