我有以下问题:
WebMethod的调用不是在Visual Studio 2013(ASP.NET WebForms Application)中创建的项目上完成的.如果我创建一个项目,例如,在Visual Studio 2008中并迁移到VS 2013正常工作.只有在Visual Studio 2013中创建新项目时才会出现此问题.控制台中没有错误消息. WebMethod没有被调用.什么都没发生.我经常搜索但却一无所获.
ASPX代码:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestePageMethods._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" /> <script type="text/javascript"> function testeClick() { PageMethods.SayHello("Name"); } </script> <input type="button" value="Say Hello" onclick="testeClick();" /> </form> </body> </html>
ASPX.VB代码:
Partial Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load End Sub <System.Web.Services.WebMethod(True)> _ Public Shared Function SayHello(ByVal name As String) As String Return "Hello " & name End Function End Class
有没有人试过这个或知道解决方案?我不知道该怎么做 …
编辑:
伙计们,我现在又发现了一条信息:
仅在VS2013中使用:
-新项目.
-Web – ASP.NET Web应用程序.
– 选择模板“空”.
– 插入页面“Default.aspx”,WebMethod正常工作……
现在,如果您创建一个新项目并选择模板“WebForms”,则不起作用…
可以交叉引用吗?还是一些不同的设置?
解决方法
我找到了我的问题的解决方案:阻止WebMethod被调用的是对“System.Web.Optimization”的引用.不确定他是怎么做到的,但由于我当时不会使用它,所以决定删除:
“System.Web.Optimization”和“Microsoft.AspNet.Web.Optimization.WebForms”
还需要删除web.config,如下所示:
<namespaces> <add namespace="System.Web.Optimization" /> </namespaces> <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" /> <dependentAssembly> <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> </dependentAssembly>
一切都好吧!感谢所有帮助我解决问题的人!