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

时间:2014-04-22 08:08:31

标签: c#

在针对同一个帖子阅读不同的答案后,我尝试了他们讨论中提到的几乎所有选项,但我仍然收到错误:

错误No1 The remote server returned an error: (404) Not Found.

错误No2 The remote server returned an error: (405) Method Not Allowed

以下是我的代码:

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.

4 个答案:

答案 0 :(得分:0)

使用:

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

在声明方法的服务页面上,以大写字母键入POST。我认为你输入的是小写字母。

答案 1 :(得分:0)

我也面对这个问题。此错误的根本原因可能是错误的Web配置文件中的端点地址..

这是我错误的网络配置

<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>

现在它的工作正常......最好是你的......好运。

答案 2 :(得分:0)

我的赌注是Paramter1或用户名或密码不正确 - 换句话说,您尝试使用的用户不存在。

服务器返回 404 Not Found ,不是因为您没有找到正确的API方法,而是因为您要求的对象不存在。

答案 3 :(得分:0)

查看您的代码,创建URL并以url形式编码的数据进行传递,但是随后将内容类型设置为application/json。我想你要么:

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

  1. 只希望不发送URL中的数据,而是需要为POST设置JSON正文