尝试使用jQuery调用驻留在.aspx页面上的WebMethod

时间:2013-12-18 15:42:27

标签: c# jquery asp.net-ajax iis-7.5 webmethod

我正在尝试使用jQuery调用驻留在.aspx页面上的WebMethod。在开发环境(localhost)工作正常,但是当我从服务器运行它时,似乎根本没有调用WebMethod。我正在使用的服务器环境工具是.Net 2.0 SP2,IIS7.5和Visual Studio 2005。

正在调用的WebMethod创建并写入.xml文件。然后,由另一个找不到它的方法搜索此文件,因为WebMethod未执行且文件从未创建过。

这些是我为解决问题而尝试过的一些事情:

•添加ScriptManager。我从.aspx文件中删除了它,因为它没有解决问题,并在博客中读到不需要ScriptManager以使WebMethod调用有效。

•在RadScriptManager中设置属性EnablePageMethods = true。目前它不再设置为真,因为它没有解决问题。

•在web.config文件中添加ScriptModule。

•在web.config中添加协议:

  <system.web>
     <webServices>
        <protocols>
           <add name="HttpSoap"/>
           <add name="HttpPost"/>
           <add name="HttpGet"/>
            <add name="Documentation"/>
        </protocols>
     </webServices>
   <system.web>

我从Web.config文件中删除了这些,因为它们没有解决问题,并在博客中读到在运行.net 1.1和IIS 5.0,IIS 5.1,IIS6.0的环境中需要这些标记。

•为用户和池分配写入权限,以便他们能够写入该文件夹。 (IIS 7.5)

我在Web.config文件中遗漏了什么?可能导致问题的原因是什么?

这是WebMethod:

[WebMethod]
public static string GetContinuityofCareDocument(string continuityofCareDocument, string    indicator, string endOffile)
{
    string _filePrefix = indicator;
    string _fileNamexml = @"C:\TempFile" + _filePrefix + ".xml";
    StreamWriter _txtFile = new StreamWriter(_fileNamexml, true);
    _txtFile.Write(continuityofCareDocument);
    _txtFile.Close();

        return " Success";
}

以下是调用WebMethod的位置:

<script language="javascript" type="text/javascript">


function SendCcdtoServer(params,indicator,endOffile) {
    jQuery.ajaxSetup({ async: true });
    jQuery.ajax({
    type: "POST",
        url: '<%=ResolveUrl("WebServiceDisplayCCD.aspx")%>'+'/GetContinuityofCareDocument',
        data:  '{continuityofCareDocument: "'+params+'", indicator: "'+indicator+'", endOffile:             "'+endOffile+'"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        error: function(response) {
            alert("response + failure  ");
        }
    });
}
function OnSuccess(response) {
    alert("Success");
}


</script>

这是Web.config:

<configuration>
    <configSections>
        <sectionGroup name="Localization">
            <section name="Localization"                        type="Localization.LocalizationConfigurationHandler, Localization,Version=1.0.0.0,  Culture=neutral, PublicKeyToken=CA5930580A5E0032" />
        </sectionGroup>
    </configSections>


    <system.web>

        <pages enableViewStateMac="false" validateRequest="true"                            enableEventValidation="false"   viewStateEncryptionMode="Never"                     smartNavigation="false" />
        <httpModules>
            <remove name="ScriptModule" />
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule,                        System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,                    PublicKeyToken=31bf3856ad364e35" />
        </httpModules>
        <httpHandlers>
            <add path="Telerik.Web.UI.WebResource.axd"                                  type="Telerik.Web.UI.WebResource" verb="*" validate="false" />
        </httpHandlers>
        <compilation debug="true">
            <assemblies>
                …
            </assemblies>
        </compilation>
        <sessionState mode="SQLServer" sqlConnectionString="Data                            Source=###.###.###.#;User ID=XXXXX;password=XXXXXX"                             cookieless="false" timeout="60" />
        <globalization enableClientBasedCulture="true" />

    </system.web>


    <location allowOverride="true" inheritInChildApplications="true">
        <appSettings>
            <add key="Authentication" value="Windows" />
        </appSettings>
    </location>

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <add name="Telerik_Web_UI_WebResource_axd" verb="*"                                 preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd"                 type="Telerik.Web.UI.WebResource"/>
        </handlers>
    </system.webServer>

</configuration>

当使用chrome的开发人员工具时,我收到500错误,该错误指出“无效的JSON”并包含整个页面的脚本。

在搜索此错误的可能解决方案后,我收到许多关于如何解决“无效JSON原语”错误的博客,这似乎不适用于我正在处理的问题。

导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:0)

尝试设置resolve var并在debug中查看它:

var url = '<%=ResolveUrl("WebServiceDisplayCCD.aspx")%>'

答案 1 :(得分:-1)

尽管这是一个非常简单的答案,但我花了很多时间来寻找答案,但是在任何站点上都找不到它: 它取决于开发模式和Internet上发布模式下的参数位置。

在开发模式下,您的网址是这样的 http:// localhost:portnumber/yournamesite/pagesite/parameter 参数的位置位于网址的位置4。

当您在iis上的Internet上发布站点时,您的URL变为 http://yoursite.com/pagesite/parameter 并且参数的位置在位置3上。