“SoapException:服务器无法识别HTTP Header SOAPAction的值”在以编程方式定义Binding而不是App.Config时

时间:2014-06-12 23:36:36

标签: c# web-services binding basichttpbinding channelfactory

我有一个asmx网络服务。在客户端,我不想使用app config。所以我试图使用ChannelFactory服务来阅读我的应用程序的配置。:

 BasicHttpBinding myBinding = new BasicHttpBinding();

并设置app.config中的所有属性。然后我定义了我的端点和通道工厂:

EndpointAddress myendpoint = new EndpointAddress("http://localhost:<portNumber>/<serviceName>.asmx");
ChannelFactory<IServiceInterface> myCh = new ChannelFactory<IServiceInterface>(myBinding, myendpoint);
IServiceInterface service = myCh.CreateChannel();

这是我从频道调用方法时遇到的错误:

System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header     SOAPAction: http://localhost/<serviceName.asmx/IServiceInterface/<MethodName>.
at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest

1 个答案:

答案 0 :(得分:2)

您可以做的一件事是在服务的界面中更改OperationContract属性中的Action属性。

[ServiceContract]
interface IService
{
    [OperationContract(Action = "http://tempuri.org/GetString")]
    string GetString();
}

我不确定这是最好的解决方案,搜索另一个解决方案,如果发现任何问题会提示。但这个适合我。