我已经由WCF部署到主机,我的ASP.NET站点正在尝试使用相同的服务。
我收到此错误:
使用名称BasicHttpBinding进行绑定 验证失败,因为它包含 一个带类型的BindingElement System.ServiceModel.Channels.MtomMessageEncodingBindingElement 部分不支持 信任。考虑使用 BasicHttpBinding或WSHttpBinding,或 托管您的应用程序 完全信任的环境。描述: 在此期间发生了未处理的异常 当前网络的执行 请求。请查看堆栈跟踪 有关错误的更多信息 它起源于代码。
异常详细信息: System.InvalidOperationException:The 使用名称BasicHttpBinding绑定 因为它包含失败的valiadation 一个带类型的BindingElement System.ServiceModel.Channels.MtomMessageEncodingBindingElement 部分不支持 信任。考虑使用BasicHttpBinding 或WSHttpBinding,或托管您的 在完全信任中申请 环境。
我该如何解决这个问题?
答案 0 :(得分:2)
正是它所说的:不要在完全信任的环境中使用MTOM或托管。
短信编码:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="myBinding" messageEncoding="Text">
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
大多数共享托管服务提供商只提供部分信任.NET托管。您需要一台(半)专用机器才能获得完全信任,或者在互联网上浏览一下想要冒险的共享托管服务提供商。
答案 1 :(得分:1)
您无法“绕过”部分信任主机,以便运行需要完全信任的代码。
您有两种选择。首先,遵循错误消息的建议并使用不需要完全信任的绑定。或者,其次,您可以找到一个完全信任的代码运行主机。
答案 2 :(得分:0)
您有不同的选择
让我用一个例子详细说明第三个选项。假设您有一个方法调用MakeServiceCallToDangerousSite(string siteUrl)。您需要从部分受信任的代码中调用它,您不希望这被误导。该怎么办? 首先,您可以避免从调用者获取“危险站点”URL,即MakeServiceCallToDangerousSite()。 其次,既然您完全控制了该调用,您可以声明性地(在方法级别)或命令性地(即permission.Assert();尝试{DangerousCall())来代表您的调用者声明进行该调用所需的CLR权限;} {CodeAccessPermission.RevertAssert();} 第三,程序集需要完全受信任,为此,您需要它在GAC中,这也需要程序集强大命名。 我希望这有帮助,至少作为指向MSDN更好解释的指针: - )