美元.ajax POST到我的web服务工作正常,但GET请求失败错误405方法不允许
$.ajax POST to my webservice works fine but GET requests fail with error 405 Method not allowed
一段时间以来,我一直在使用web服务,不管jquery $的目的是什么。ajax类型:"POST"。它总是能完成工作,所以我从来没有真正研究过使用type:"GET"。我今天刚刚测试了"GET",因为我使用的这个插件(EXT Gantt)需要GET,我在Firebug中得到了这个方法不允许(405)错误。我认为我需要启用我的web服务来接受GET请求。我怎么做呢?
接口:
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
List<Task> GetAllTasks();
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
List<Dependency> GetAllDependencies();
类:
[DataContract]
public class Task
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string StartDate { get; set; }
[DataMember]
public string EndDate { get; set; }
[DataMember]
public int PercentDone { get; set; }
[DataMember]
public int? ParentId { get; set; }
[DataMember]
public bool IsLeaf { get; set; }
[DataMember]
public string Responsible { get; set; }
[DataMember]
public int Duration { get; set; }
}
[DataContract]
public class Dependency
{
[DataMember]
public int From { get; set; }
[DataMember]
public int To { get; set; }
[DataMember]
public int Type { get; set; }
}
方法:
public List<Task> GetAllTasks()
{
List<Task> Tasks = new List<Task>()
{
};
Task temp = new Task();
temp.Id = 0;
temp.Name = "Planning";
temp.StartDate = "2010-01-06T00:00:00";
temp.EndDate = "2010-01-21T00:00:00";
temp.PercentDone = 40;
temp.ParentId = null;
temp.IsLeaf = false;
temp.Responsible = "John Doe";
temp.Duration = 0;
Tasks.Add(temp);
return Tasks;
}
public List<Dependency> GetAllDependencies()
{
List<Dependency> Dependencies = new List<Dependency>()
{
};
Dependency temp = new Dependency();
temp.From = 11;
temp.To = 12;
temp.Type = 2;
Dependencies.Add(temp);
return Dependencies;
}
Javascript/Ajax:(同样,当使用type: "POST"时,这可以完美地工作)
$.ajax({
type: "GET",
async: false,
url: "Services/ProjectService.svc/GetAllDependencies",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, textStatus, xhr) { }
});
$.ajax({
type: "GET",
async: false,
url: "Services/ProjectService.svc/GetAllTasks",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, textStatus, xhr) { }
});
网络。配置
<system.serviceModel>
<services>
<service behaviorConfiguration="ProjectScheduler.Services.ProjectServiceBehavior" name="ProjectScheduler.Services.ProjectService">
<endpoint address="" behaviorConfiguration="http" binding="webHttpBinding" bindingConfiguration="" contract="ProjectScheduler.Services.IProjectService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="webBinding">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="http">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ProjectScheduler.Services.ProjectServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
尝试将界面更改为
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, Method="GET")]
List<Task> GetAllTasks();
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, Method="GET")]
List<Dependency> GetAllDependencies();
相关文章:
- 有没有一种方法可以防止img get请求使用css或js发生
- jQuery Ajax GET请求工作不正常
- Angularjs http.get() Cross-Origin 请求被阻止
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 如何在nightwatch.js中发送ajax get请求
- 当我在chrome中切换设备模式时,$http.get请求失败
- 根据GET请求的结果自定义页面内容
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Codeigniter JQuery在JQuery.get请求后动态加载视图中的数据
- 错误Jquery.$.get()请求
- 如果我对一个文件发出ajax GET请求,我会得到什么以及如何将其添加到页面中
- JQuery AJAX 在 GET 请求完成时返回 XML
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 嵌套在 .get 请求中的 jQuery 不会执行
- 如何在 GET 请求中序列化查询的对象
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- Jquery.ajax 请求 'Get' to Web API 2 后端不起作用
- 我如何使用NodeJs请求GET模块发送cookie
- 错误的错误.GrailsExceptionResolver -在处理请求:[GET]时发生NullPointerExce
- Angular js $http请求 get 失败