ASP.NET AJAX PageMethods为.NET 4.5调用加载整个页面IIS 7.5
问题描述:
我在aspx页面的代码隐藏中调用pageMethod。我得到整个页面的响应,而不是webMethod响应。另外,我尝试使用jquery调用相同的webMethod并获取整个页面作为响应。ASP.NET AJAX PageMethods为.NET 4.5调用加载整个页面IIS 7.5
Client:
<asp:ScriptManager ID="scriptManager1" runat="server" EnablePartialRendering="True"
EnablePageMethods="true" EnableScriptGlobalization="true" EnableScriptLocalization="true" >
function TestNumber() {
PageMethods.getNumber(ResponseTest);
}
function ResponseTest(response){
var num = response.d;
}
CodeBehind:
[WebMethod]
public static int getNumber()
{
return accountNumber;
}
我使用.NET 4.5.1和IIS7.5,我认为问题是在VS2013内置扩展名URLS realted来。我正在使用以下web.config sys.webserver
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
我试图通过jquery ajax调用相同,并获得整个页面。我错过了什么?
答
是的,它似乎是web.config设置。
尝试从<modules>
部分<remove name="ScriptModule" />
删除此行只加
<system.webServer>
<modules>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</modules>
</system.webServer>
答
友好的URL(该扩展名的URL库是默认的项目模板的一部分)不支持程序的[的WebMethod]调用。如果您必须使用[WebMethod],请从项目中卸载Friendly URLs。这可以从Nuget Package Manager window完成。
删除此包后,可能需要修复项目和Web.config文件中的链接以添加缺少的.aspx扩展名。
答
如果使用的是友好的URL,然后加入
PageMethods.set_path(PageMethods.get_path() + '.aspx');
到您的js
祝你好运!
可以任何一个请分享正确的sys.webserver配置为AJAX页面方法或jQuery的ajax调用方法,考虑IIS7 +中的默认扩展项。我正在使用.NET 4.5.1。谢谢。 – gkarch
你有没有想过这个? – AgapwIesu