格式化程序异常反序列化Agatha请求

时间:2011-09-02 04:12:21

标签: wcf iis datacontractserializer

我一直在摸不着头,一两次 几天,我希望有人可以提供一些见解。首先, 例外...

  

活动返回了一个异常:格式化程序抛出了一个异常   尝试反序列化消息时出现异常:出现错误   在尝试反序列化参数http://tempuri.org/:requests时。   InnerException消息是'第1行位置837中的错误。元素   'http://schemas.datacontract.org/2004/07/Agatha.Common.Request'   包含映射到名称'http://的类型的数据   schemas.datacontract.org/2004/07/   MyCompany.MyProduct.Services.Contracts.Customers:ReadAllCustomersRequest”。   反序列化器不知道映射到此名称的任何类型。   考虑使用DataContractResolver或添加对应的类型   'ReadAllCustomersRequest'到已知类型列表 - 例如,by   使用KnownTypeAttribute属性或将其添加到列表中   传递给DataContractSerializer的已知类型。'。请参阅   InnerException以获取更多详细信息。

好的,这很公平。好像序列化器不知道我的类型 (ReadAllCustomersRequest)继承自Agatha的请求。很奇怪,因为 阿加莎应该在配置期间处理这个问题。我的服务层 config看起来像这样......

// NOTE: A Unity container (re: the container variable) is built upelsewhere.

var agathaServiceConfiguration = new ServiceLayerConfiguration(new Container(container));
agathaServiceConfiguration.AddRequestHandlerAssembly(typeof(ReadAllCustomersHandler).Assembly);
agathaServiceConfiguration.AddRequestAndResponseAssembly(typeof(ReadAllCustomersRequest).Assembly);
agathaServiceConfiguration.Initialize();

请注意,我的处理程序类型与此代码位于同一程序集中 (MyCompany.MyProduct.Services)。我的请求和响应类型, 然而,是在一个不同的集会 (MyCompany.MyProduct.Services.Contracts)。没什么大不了。毕竟,我 基本上复制了Brion的“Hello World”(并参考了中的例子) 阿加莎的来源)。

问题是这一切都很好。没有任何错误...... 在本地运行时(Win7 / VS2010 / Cassini)。如果我推动服务器端 shebang到IIS 7.5站点,然而,我开始得到例外 以上。相同的编译程序集相同的配置文件。结果不同。 哦,IIS ......我多么爱你。

我非常怀疑这是一个阿加莎问题,因为正如我所说,它运行起来 在当地很好。我只是想知道是否有人知道为什么 当我把它放到远程服务器上时它会失败。我可能不见了 一些非常非常明显的事情。

哦,为了它的价值,IIS 7.5网站正在托管非Agatha (嘘!)服务很好。我的mex端点列举得很好, 太。哦,Elmah没有记录任何服务器端。一切都很正常 直到我发送客户请求。

所以,关于我的部署的某些东西已经开始了,但它是 让我难过。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我的部署很糟糕,我的Global.asax没有正确部署。 唉...