我在从wcf服务返回自定义错误异常时遇到了一些麻烦.与wcf服务通信的客户端应用程序获取 - 合同不匹配错误.这是我在服务中定义的错误合同:
public partial class Fault
{
string codeField;
string messageField;
string detailsField;
}
Run Code Online (Sandbox Code Playgroud)
在服务错误时,我创建自定义错误异常如下:
public void ProvideFault(Exception exception, MessageVersion version, ref Message refMessage)
{
mynamespace.Fault customFault = new mynamespace.Fault()
{
code = "Service Error",
message = "Error Message",
details = "Error Message"
};
FaultException<mynamespace.Fault> faultexception = new FaultException<mynamespace.Fault>( customFault );
MessageFault messageFault = faultexception.CreateMessageFault();
refMessage = Message.CreateMessage( version, messageFault, faultNamespace );
}
Run Code Online (Sandbox Code Playgroud)
此代码导致客户端中的合同不匹配错误.任何人都可以帮我找到错误吗?
我正在使用MVC,Nhibernate和IOC容器进行企业应用程序.
我三层:
DAL - Nhibernate数据存储库
public class CustomerRepository : Repository<int>,ICustomerRepository
{
public CustomerRepository(IUnitOfWork unitOfWork)
: base(unitOfWork)
{
}
}
Run Code Online (Sandbox Code Playgroud)
BLL - 业务层
public class CustomerManager
{
private readonly ICustomerRepository _repository;
public CustomerManager(ICustomerRepository repository)
{
_repository = repository;
}
public IList<Customer> GetAll()
{
return _repository.GetAll<Customer>();
}
}
Run Code Online (Sandbox Code Playgroud)
演示 - MVC控制器
private readonly IUnitOfWork _unitOfWork;
private readonly ICustomerRepository _repository;
private readonly CustomerManager _manager;
public HomeController(IUnitOfWork unitOfWork, ICustomerRepository repository)
{
_unitOfWork = unitOfWork;
_repository = repository;
_manager = new CustomerManager(_repository);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用IOC容器来注册工作单元和CustomerRepository对象.国际奥委会集装箱工作正常.
关于这个解决方案的问题是我在控制器中有CustomerRepository引用.这种架构是好还是有更好的方法来实现它?
architecture nhibernate model-view-controller asp.net-mvc design-patterns
我在从wcf消息中检索正文时遇到了一些麻烦.我正在尝试实现WCF消息检查器来验证针对XSD架构的消息.
肥皂体如下:
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Header xmlns="http://www.test1.com">
<applicationID>1234</applicationID>
</Header>
<GetMatchRequest xmlns="http://www.tempuri.org">test</GetMatchRequest>
</s:Body>
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试获取身体时,它只会得到部分身体信息.获取只有header元素,忽略GetMatchRequest元素(可能是因为多个名称空间...)
我使用以下来获取邮件正文:
XmlDocument bodyDoc = new XmlDocument();
bodyDoc.Load( message.GetReaderAtBodyContents().ReadSubtree());
Run Code Online (Sandbox Code Playgroud)
我也试过以下:
bodyDoc.Load( message.GetReaderAtBodyContents());
Run Code Online (Sandbox Code Playgroud)
上面的代码导致错误 - 该文档已经有一个'DocumentElement'节点.
任何人都可以帮助从WCF消息中提取身体吗?
谢谢