在IIS中运行Web服务时出现以下错误:
>'/ Inbox Sevice'中的服务器错误 应用。请求格式是 意外地无法识别URL 以'/ GetMailsInfo'结尾。 描述:未处理的异常 在执行期间发生 当前的网络请求。请查看 堆栈跟踪以获取更多信息 错误及其来源 代码。异常详细信息: System.InvalidOperationException: URL的请求格式无法识别 意外地结束了 '/ GetMailsInfo'。
来源错误:
生成了未处理的异常 在执行当前 网络请求。有关的信息 异常的起源和位置 可以使用例外来识别 堆栈跟踪下面。
堆栈追踪:
[InvalidOperationException:Request 格式无法识别URL 意外地结束了 '/ GetMailsInfo'。]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(类型 type,HttpContext context,HttpRequest 请求,HttpResponse回复) +490982 System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context,String verb,String url, String filePath)+104
System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext的 context,String requestType,String url,String pathTranslated)+127
System.Web.HttpApplication.MapHttpHandler(HttpContext的 context,String requestType, VirtualPath路径,String pathTranslated,Boolean useAppConfig) +175 System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +120 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步,布尔& completedSynchronously) 155版本信息:Microsoft .NET 框架版本:2.0.50727.42; ASP.NET版本:2.0.50727.42
有谁知道我为什么会看到此错误,是否有任何方法可以修复它?
答案 0 :(得分:88)
由于HTTP GET和HTTP POST为disabled by default,请尝试将以下内容添加到配置文件中:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
答案 1 :(得分:5)
我遇到了同样的问题。 要解决此问题,请将[ScriptService]添加到您的服务
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
namespace DemosAjaxcontroltoolkit
{
/// <summary>
/// Summary description for WebService
/// </summary>
[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
[System.Web.Script.Services.ScriptMethod()]
[WebMethod]
public string[] GetWords(string prefixText, int count)
{
List<string> words = new List<string>();
words.Add("Apple");
words.Add("Appertizer");
words.Add("Apple tree");
words.Add("Apple Cider");
words.Add("Afternoon");
words.Add("Morning");
words.Add("Breakfeast");
words.Add("Lunch");
words.Add("Spider");
words.Add("Morning");
words.Add("Day");
words.Add("Travel");
words.Add("Night");
words.Add("Car");
words.Add("Bikes");
words.Add("Love");
words.Add("Good");
//return words.Where(w => w.StartsWith(prefixText)).Take(count).ToList();
//List<string> returnedList = words.Where(w => w.StartsWith(prefixText)).Take(count).ToList();
return words.Where(w => w.ToUpper().StartsWith(prefixText.ToUpper())).ToArray();
}
}
}
}
答案 2 :(得分:2)
只是出于兴趣( - 在通过AJAX访问网络服务的情况下);我发现如果没有传递'content-type'标题( - 即使它是本地/“HttpPostLocalhost”请求),那么问题就出现了,所以我自己传递了标题(例如通过jQuery的'$ .ajax ()'方法而不是没有通过jQuery的'$ .getJSON()'方法),而不是诉诸于此: