【发布时间】:2011-09-02 04:12:21
【问题描述】:
我已经断断续续地挠头好几次了 现在几天,我希望有人可以提供一些见解。首先, 异常...
一个活动返回了一个异常:格式化程序抛出了一个异常 尝试反序列化消息时出现异常:出现错误 在尝试反序列化参数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' 到已知类型列表 - 例如,通过 使用 KnownTypeAttribute 属性或将其添加到 传递给 DataContractSerializer 的已知类型。请参见 InnerException 了解更多详情。
好的,这很公平。似乎序列化程序不知道我的类型 (ReadAllCustomersRequest) 继承自 Agatha 的请求。奇怪,因为 Agatha 应该在配置期间处理这个问题。我的服务层 配置看起来像这样...
// 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.Contracts)。没什么大不了。毕竟,我 基本上复制了 Brion 的“Hello World”(并引用了 阿加莎来源)。
问题是这一切都很好。没有任何错误... 在本地运行时(Win7/VS2010/Cassini)。如果我推送服务器端 shebang 到一个 IIS 7.5 站点,但是,我开始得到异常 更多。相同的编译程序集。相同的配置文件。结果不同。 哦,IIS...我多么爱你。
我非常怀疑这是一个 Agatha 问题,因为正如我所说,它运行 在当地就好了。我只是想知道是否有人知道为什么 当我将它放到远程服务器时它失败了。我可能失踪了 非常非常明显的东西。
哦,值得一提的是,IIS 7.5 站点托管的是非 Agatha (嘘!)服务很好。我的 mex 端点被枚举得很好, 也。哦,Elmah 没有在服务器端记录任何内容。一切正常 直到我从客户端发送请求。
所以,关于我的部署,有些东西很糟糕,但它是 让我难住了。有什么想法吗?
【问题讨论】:
标签: wcf iis datacontractserializer