我的项目中有一个Web服务文件,它有一个用于AutoCompleteExtender的Web方法,当我从VS调试它时工作正常。
但是当我在IIS上发布并托管它时,它无法正常工作。
但是,我通过输入URL直接测试了webservice方法,并给出了所需的输出。
是否需要在IIS中进行特殊设置才能使其正常工作或者需要设置AutoCompleteExtender的任何属性?
答案 0 :(得分:1)
当我将网站从cassini移动到IIS7.5时,我遇到了这个问题。经过大量挖掘后,必须将以下内容添加到system.webServer部分的web.config中。希望它有所帮助。
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<remove name="ScriptHandlerFactory"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
答案 1 :(得分:0)
从ASP.NET 3.5升级到4.0后,我遇到了同样的问题,无法使扩展器工作。从firefox和firebug我收到 500内部服务器错误并带有消息
System.InvalidOperationException:请求格式无效:application / json;字符集= UTF-8。 在System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() 在System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
我已使用http://msdn.microsoft.com/en-us/library/bb763183.aspx建议的web.config设置进行了测试,但发现配置错误。
答案 2 :(得分:0)
尝试更改处理程序的顺序(删除然后添加)。在这个例子中,我删除了除AJAX /脚本处理程序之外的所有处理程序。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
<remove name="WebServiceHandlerFactory-ISAPI-2.0-64"/>
<remove name="WebServiceHandlerFactory-ISAPI-4.0_32bit"/>
<remove name="WebServiceHandlerFactory-ISAPI-4.0_64bit"/>
<!--<add name="WebServiceHandlerFactory-Integrated-4.0" ...</handlers>
答案 3 :(得分:0)
它不是IIS或ath的问题。它实际上是一个错误(我认为)。在webservice函数中返回字符串数组请检查函数的参数名称或参数。 字符串参数的名称必须是prefixText,而int字段的名称应该是count。
Web服务中的函数必须有这两个参数。
像这样[WebMethod]
public string[] getCountry(string prefixText, int count)
{
......
....
return ...
}
答案 4 :(得分:0)
我面临着同样的问题。在IIS 7 Windows Server 2008 R2中托管后,AutoCompleteExtender无法正常工作。
通过将应用程序池的“托管管道模式”从“集成”更改为“经典”,对我来说很有效。 可以通过选择应用程序池->选择“基本设置”来进行此设置。
谢谢。
答案 5 :(得分:-1)
...尝试这
转到开始&gt;运行&gt; inetmgr&gt;
在连接侧窗格中...选择应用程序池
选择在将项目部署到iis时分配的应用程序池(检查在连接窗格中转到网站&gt;并右键单击已部署的网站并选择管理网站&gt;高级设置然后在顶部你能看到应用程序池)
然后回来并在连接窗格中的应用程序池中选择该特定应用程序池 右键单击该特定应用程序池并选择高级设置..找出该过程模型并选择标识并浏览它并转到内置帐户并选择本地系统.......然后单击确定...并获取出来......
我认为它会起作用..对我有用.....