从 Windows 应用程序访问 WCF 时出现“方法不允许”错误

本文关键字:方法 不允许 方法不允许 错误 应用程序 Windows 访问 WCF | 更新日期: 2023-09-27 17:56:51

我在我的Web项目中创建了一个启用Ajax的WCF,使用返回消息"Hello World"的简单方法,并将其托管在IIS中。当我从浏览器调用 WCF 时,它正在工作并显示类似

{"d":"Hello World"}

我创建了一个 Windows 应用程序并添加了如下代码来访问 wcf

 BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
            EndpointAddress epa = new EndpointAddress("http://localhost:60/wcf");
            ServiceReference2.PurchaseWCFClient objk = new ServiceReference2.PurchaseWCFClient(binding,epa);
            label1.Text = objk.DoWork();

但是这段代码

标签1.文本 = objk。做工作();

返回错误,指出"远程服务器返回意外响应:(405) 方法不允许。

我在谷歌上搜索了很多,尝试了很多方法,但没有任何效果。我是WCF的新手,对WCF没有太多的低估。

如果我使用 JavaScript 调用或 ajax 调用从同一项目调用 WCF,则相同的函数正在工作

这是我购买WCF.svc.cs包含的内容

 [ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class PurchaseWCF
{
    [WebGet()]
    [OperationContract]
    public string DoWork()
    {
        return "Hello World";
    }

}

我的网络配置包含

<service name="InfraERP.WCF.PurchaseWCF">
    <endpoint address="" behaviorConfiguration="InfraERP.WCF.PurchaseWCFAspNetAjaxBehavior"
      binding="webHttpBinding" contract="InfraERP.WCF.PurchaseWCF" />
  </service>
 <behavior name="InfraERP.WCF.PurchaseWCFAspNetAjaxBehavior">
      <enableWebScript />

最初我尝试像这样使用

ServiceReference2.PurchaseWCFClient objk = new ServiceReference2.PurchaseWCFClient();

此时,我收到如下错误"在服务模型客户端配置部分中找不到引用协定'ServiceReference2.PurchaseWCF'的默认终结点元素。这可能是因为找不到应用程序的配置文件,或者因为在客户端元素中找不到与此协定匹配的终结点元素。

之后,我参考了一些网站,如上所示添加了代码,并收到"方法不允许"错误我为此浪费了整整一天...请帮我找出问题所在...

从 Windows 应用程序访问 WCF 时出现“方法不允许”错误

解决您的问题的可能方法,

(i)从服务引用中完全删除引用,也可以从配置中手动删除。

(ii)再次添加服务引用,检查服务和客户端配置中的合约名称。