远程服务器返回错误: "(405) 方法不允许"

5
在阅读了同一主题的不同答案后,我尝试了他们讨论中提到的几乎所有选项,但仍然出现错误:
错误1:远程服务器返回错误:(404)未找到。或
错误2:远程服务器返回错误:(405)方法不允许。
以下是我的代码:
var httpWebRequest = (HttpWebRequest)WebRequest.Create("URL?Paramter1=pc&user=u1&password=p1");
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Method = "POST";
httpWebRequest.Accept = "application/json";
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

我在最后一行收到错误,即


var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

如果我使用 httpWebRequest.Method="GET",我会收到如上所述的错误号码1,如果我使用 httpWebRequest.Method="Post",我会收到错误号码2。

你从哪里返回JSON? - Nicklas Pouey-Winger
我猜你不知道调用方法是POST还是GET?编辑:你知道Web调用的参数是什么吗? - kostas ch.
1
是的,但返回方法应该长什么样呢?我不太确定你的意思,但当我从控制器返回json时,我需要将JsonRequestBehaviour.AllowGet作为返回结果的一部分添加进去。 - Nicklas Pouey-Winger
好的,如果是发布文章,则保持为“Post”,但您知道它的模式吗?我的意思是参数的名称以及是否必须提供更多参数作为对象?我的意思是除了在URL中设置的3个参数之外,您确定该方法不需要期望一个对象,例如一个类吗? - kostas ch.
@kostasch。无代理。 - amw
显示剩余10条评论
5个回答

1
我是一名有用的助手,可以为您翻译文本。

我也遇到了这个问题。造成这个错误的根本原因可能是在web config文件中错误地输入了端点地址。

以下是我的错误web config文件:

<services>
  <service behaviorConfiguration="mexBehavior" name="sample.sample">
    <endpoint address="http://xxx.xxx.x.xxx:9335" binding="basicHttpBinding" contract="sample.Isamplebase" />
    <host>
      <baseAddresses>
        <add baseAddress="http://xxx.xxx.x.xxx:9335" />
      </baseAddresses>
    </host>
  </service>
</services>

应该像这样。
<services>
  <service behaviorConfiguration="mexBehavior" name="sample.sample">
    <endpoint address="http://xxx.xxx.x.xxx:9335/sample.svc" binding="basicHttpBinding" contract="sample.Isamplebase" />
    <host>
      <baseAddresses>
        <add baseAddress="http://xxx.xxx.x.xxx:9335" />
      </baseAddresses>
    </host>
  </service>
</services>

现在它正常运行...最好的是你的...祝你好运。

0

使用:

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "abcxx")]

在您的服务页面中声明方法时,请使用大写字母键入POST。我认为您正在使用小写字母键入。

0

看了你的代码,你创建了一个URL并将数据作为url表单编码传递,但是然后你设置内容类型为application/json。我想你要么:

  1. 意图使用application/x-www-form-urlencoded作为内容类型

或者

  1. 意图不在URL中发送数据,而需要为你的POST设置JSON主体

0

我也遇到了这个问题。在我的情况下,原因是URL不正确(不完整)。

我打了电话

60033/COMPANY_NAME/api/Company/MOM/v1.0/companies(5a56e3ea-cd63-ec11-b6ea-6045bd874170)/

但是您无法在通用公司URL上执行POST操作。

我应该使用不同的头文件取决于我的目的。

60033/COMPANY_NAME/api/Company/MOM/v1.0/companies(5a56e3ea-cd63-ec11-b6ea-6045bd874170)/receiptHeaders

当我修复了URL错误后,问题就解决了。


0

我猜测,参数1、用户名或密码中可能有一个不正确——换句话说,你试图使用的用户不存在。

服务器返回404未找到,不是因为你没有调用正确的API方法,而是因为你请求的对象不存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接