我试图用一个WCF服务,以满足MS阿贾克斯AutoCompleteExtender完成列表。 我尝试了两种备选方案。 如果我在我的网站项目中添加一个WCF服务,AutoCompleteExtender称之为thriugh POST和正常工作。
然后,我决定做一个独立的WCF应用程序并添加我的支持AJAX的WCF服务,以新的应用程序。 我也复制的一部分Web.config
我有关的网站servicemodel
。 而且这是行不通的! 首先,自动完成调用一个服务uing GET
,不POST
。 我改变WebInvokeAttribute
和WebGet
我的服务的接受GET
。 现在,该服务发送到扩展正确的响应(我看着这个使用招),但增量不填写完成列表。
扩展器的定义如下( act
为AjaxControlToolkit标签):
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" autocomplete = "off"></asp:TextBox>
<act:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server"
DelimiterCharacters="" Enabled="True" ServiceMethod="GetNames"
ServicePath="http://localhost:4227/Service1.svc" TargetControlID="TextBox1">
</act:AutoCompleteExtender>
<asp:Button ID="Button1"
runat="server" Text="Button" />
</div>
<act:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</act:ToolkitScriptManager>
</form>
WCF服务端口4227.它是运行工作由Visual Studio。 在第一种情况是ServicePath Service1.svc
。
Web.Config中定义了这样的方式sevicemodel:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
<endpoint address="" behaviorConfiguration="WcfService1.Service1AspNetAjaxBehavior" binding="webHttpBinding" contract="WcfService1.Service1" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WcfService1.Service1AspNetAjaxBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WcfService1.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
所以,我有两个auestions:
- 为什么在这种情况下,自动完成使用不同的动词来发送一个请求?
- 为什么它不会在第二种情况下工作吗?
我上传了样品溶液来重现问题。