在我们的项目中,我们直接从asp.net网页调用.svc文件,并收到错误“远程服务器返回错误:(400)错误请求。
我们的项目架构是,我们在我们的Web应用程序中使用.svc文件,在另一个类库项目中使用.cs文件中的svc。从aspx,我们直接调用WCF服务而不添加引用或任何东西。我不能改变这个概念,因为它是我们的标准。我可以添加服务引用并调用这些方法,但我想直接从.svc url调用该方法。
我生气了2天,无法解决错误。我们正在使用HttpWebRequest来获取服务的响应。基本上,该服务将数据传输对象(DTO)作为输入,并返回与输出相同的(DTO),只有一个值。
检查以下代码:
HttpStatusCode statusCode = HttpHelper.PostXmlRequestValue(requestXMLInput,
string.Format("http://{0}/{1}/MySample.svc/webhttp/MyMethodName",
Request.ServerVariable["HTTP_HOST"], Request.ApplicationPath);
相同的代码在一台机器上工作,但在另一台机器上不工作。我检查了配置,一切都一样,但我仍然收到同样的错误。
当我在我的机器中使用.svc url时,它可以工作,但会显示“Method not allowed”的消息。当我在工作机器中检查相同的URL时,我收到了相同的消息..我相信有一些简单的事情我错过了。我找不到,因为我是WCF的新手。
答案 0 :(得分:0)
当使用HttpWebRequest时,如果服务需要Http POST,则“方法不允许”错误是您发送Http GET。
HttpWebRequest是一种基于REST的配置,这限制了您可以发送的DTO的复杂性。