从桌面问题调用 asp.net WebMethod

问题描述

我在一个旧的 asp.net 应用程序中有一个 webmethod。 KboAjaxBase.asmx 模块位于 wwwroot 中。当我从控制台应用程序调用方法时,它返回 405。我的所有其他 webmethods 都在 wesite(来自 js)中调用并且运行良好。这是唯一的桌面调用。 谢谢

asmx文件中的webmethod为:

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public partial class KboAjaxBase : System.Web.Services.WebService
{    
    [WebMethod]
    public AjaxCallParams VerifyStoreImagesOnServer(AjaxCallParams ajaxCallParams)
    {
        int imagesCreated = -1; 
        AjaxCallParams returnParams = new AjaxCallParams(ajaxCallParams.Request,"",null);
        string isbn = ajaxCallParams.Data.ToString();
        StaticState.SetIsWebApi();
        using (var db = new DataAccess())
        {
            imagesCreated = ImageFuncsServer.VerifyStoreImagesOnServer(isbn);
        }
        returnParams.Data = imagesCreated.ToString();

        return returnParams;
    }    
}

调用例程(在控制台应用程序中)是:

public static int VerifyImages(string isbn)
{
    var count = -5;
    var ajaxCallParams = new KBO.StoreLib.AjaxCallParams( );
    
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(Constants.KBOApiUrl);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = client.PutAsJsonAsync("VerifyStoreImagesOnServer",ajaxCallParams).GetAwaiter().GetResult();
        if (response.IsSuccessstatusCode)
        {
            // Get the URI of the created resource.  
            var content = response.Content.ReadAsstringAsync().ToString();
            ajaxCallParams = (KBO.StoreLib.AjaxCallParams)JsonConvert.DeserializeObject(content);
            count = (int)ajaxCallParams.Data;
        }
    }              
    return count;
}

这是工作中的 js 函数一个典型的调用

function kbo_JsonQuery(url,method,ajaxCallParams,allowWindowClose) {
    if (_kboAjaxIsActive) return; // prevent double clicks - racing
    _kboAjaxIsActive = true;
    var jsonString = "{ 'ajaxCallParams': " + JSON.stringify(ajaxCallParams) + " }";
    var myUrl = url + method;
    //kbo_showModaloverlay();
    $.ajax({
        type: "POST",url: myUrl,data: jsonString,contentType: "application/json; charset=utf-8",dataType: "json",async: allowWindowClose,//blocks window close
        success: kbo_Success,error: kbo_Error
    });
}

典型调用

function kboSaveSelectorStatus() {
    var kboSelectorCallParams = new KboSelectorCallParams(availableBooks,kboBuildStatus(),_kboSaveSelectedBooks);
    var ajaxCallParams = new KboAjaxCallParams(_kboSaveSelectedBooks,"");
    ajaxCallParams.SelectorCallParams = kboSelectorCallParams;
    kbo_JsonQuery(_kboAjaxBaseUrl,_kboSaveSelectedBooks,_kboAllowWindowClose);
    selectionIsDirty = false;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)