标签: webmethod

405:不允许的方法

编辑:摘要:似乎我的网络应用程序可以被任何人(只有Firefox或Chrome)和我使用我的主计算机访问.如果我尝试从我的任何其他LAN 访问http://luiscarlosch.com/WebFormClean.aspx它会收到405错误

我可以从localhost完美地调用WCF Web方法.我发布到这个服务器:http://luiscarlosch.com/WebFormClean.aspx(只有firefox或chrome)与Visual Studio发布工具,它工作正常.问题是当尝试从另一台计算机访问它时.我得到405:方法不允许.但它确实有意义,因为当我从发布者计算机远程访问它时它工作正常,正如我所说.任何的想法?

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ContactProxy
{
    [WebGet()]
    [OperationContract]
    public Contact getByID(int IDContact)
    {
        Contact contact = new Contact(IDContact);
        return contact;
    }
    [OperationContract]
    public EntityData insertEntityData(int IDEntityDataFieldType, int IDContact, String value)
    {
        //Contact contact = new Contact();
       // contact.insertEntityData(IDEntityDataFieldType, IDContact, value);
        EntityData entityData = new EntityData();
        entityData.save(IDEntityDataFieldType, IDContact, value);

        return entityData;
    }
}
Run Code Online (Sandbox Code Playgroud)

这两种方法似乎都不起作用.

我刚刚注意到一些用户能够访问http://luiscarlosch.com/WebFormClean.aspx,因为他们更改了值.所以.一些客户可以阅读方法,但有些不能.这应该发生了.

Web配置

<?xml version="1.0"?>

<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="ApplicationServices" …
Run Code Online (Sandbox Code Playgroud)

.net wcf webmethod http-status-code-405

6
推荐指数
1
解决办法
1万
查看次数

Shared方法中的HttpContext.Current.Session不会持久更改

我在System.Web.UI.Page中使用一些WebMethod来处理一些ajax请求,我试图在会话中存储一个对象,以便在几个ajax请求之后保留信息,甚至在离开页面并返回之后.

我正在访问会话HttpContext.Current.Session("foo"),如果它没什么,我通过它设置它HttpContext.Current.Session("foo") = New Bar().

我遇到的问题是,在设置之后,下次我按下该方法时它已被重置.我尝试更改在其他地方设置的其他会话变量,它们也会被还原.这告诉我,我正在获取会话状态的副本,而不是我可以更新并导致从请求到请求持久化的引用.我仔细检查EnableSession了WebMethod 的属性是否为True,但仍未保留更改为会话状态.

方法声明:

<System.Web.Services.WebMethod(EnableSession:=True)>
Public Shared Function foo(ByVal woNum As String, ByVal workCenter as String) As ToolingModel
    Return ToolingModel.getSessionTooling(woNum, workCenter)
End Function
Run Code Online (Sandbox Code Playgroud)

getSessionTooling:

Public Shared Function getSessionTooling(woNum As String, workCenter As String) As ToolingModel
    Dim tooling As ToolingModel = HttpContext.Current.Session(TOOLING_MODEL_SESSION_KEY)

    If tooling Is Nothing Then
        tooling = New ToolingModel(woNum, workCenter)
        HttpContext.Current.Session(TOOLING_MODEL_SESSION_KEY) = tooling
    ElseIf tooling.woNum <> woNum OrElse tooling.workCenter <> workCenter Then
        tooling.woNum = woNum
        tooling.workCenter = workCenter
        tooling.assets.Clear() …
Run Code Online (Sandbox Code Playgroud)

vb.net session-state webmethod

6
推荐指数
1
解决办法
721
查看次数

以编程方式在C#中调用webmethods

我正在尝试编写一个函数,可以从webserive调用web方法,给出方法的名称和web服务的URL.我在博客上发现了一些代码,除了一个细节之外,这样做很好.它还要求提供请求XML.这里的目标是从Web服务本身获取请求XML模板.我确信这是可能的,因为如果我在浏览器中访问webservice的URL,我可以看到请求和响应XML模板.

这是以编程方式调用webmethod的代码:

XmlDocument doc = new XmlDocument();
//this is the problem. I need to get this automatically
doc.Load("../../request.xml"); 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/dummyws/dummyws.asmx?op=HelloWorld");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
Stream stm = req.GetRequestStream();
doc.Save(stm);
stm.Close();
WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Console.WriteLine(r.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)

c# web-services asmx webmethod

5
推荐指数
1
解决办法
1万
查看次数

.NET Overload WebMethods - 可能吗?

我有两个web方法,我希望重载:

<WebMethod()> _
Public Function GetProject(ByVal id As Int32) As Project

<WebMethod(MessageName:="GetProjects")> _
Public Function GetProject(ByVal filter As String) As Projects
Run Code Online (Sandbox Code Playgroud)

我读到了使用MessageName重载,但是我无法让它工作.这可能吗?

.net web-services overloading webmethod

5
推荐指数
1
解决办法
4425
查看次数

WebMethod没有被调用

我通过jquery.ajax将包含字符串的javascript变量传递给服务器.虽然调用了"成功"条件,但从不调用服务器端WebMethod.客户:

 $.ajax({
            type: "post",
            url: "Playground.aspx/childBind",
            data: {sendData: ID},
            //contentType: "application/json; charset=utf-8",
            dataType: "text",
            success: function (result) { alert("successful!" + result.d); }
        })
Run Code Online (Sandbox Code Playgroud)

服务器:

[WebMethod]
    public static string childBind(string sendData)
    {
        return String.Format("Hello");
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net jquery webmethod

5
推荐指数
2
解决办法
8582
查看次数

jquery的post()方法是否能够调用asp.net 3.5 webmethod?

这是一些javascript:

$.ajax({
        type: "POST",
        url: "default.aspx/GetDate",
        contentType: "application/json; charset=utf-8",
        data: {},
        dataType: "json",
        success: function(result) {
            alert(result.d);
        }
     });
Run Code Online (Sandbox Code Playgroud)

上面的方法可以正常工作,并在default.aspx中警告从[WebMethod]返回的名为GetDate的字符串

但是当我使用时:

$.post(
        "default.aspx/GetDate",
        {},
        function(result) {
            alert(result.d);
        },
        "json"
     );
Run Code Online (Sandbox Code Playgroud)

此成功方法中的警报永远不会触发.

在firebug中我可以看到POST基本上有效 - 它返回200 OK
但是在这种情况下的响应是整个default.aspx页面的HTML而不是我使用$ .ajax()方法时返回的JSON.

编辑:
firebug中显示的响应和请求标头不相同.

使用$ .ajax()......

REQUEST:
Accept  application/json, text/javascript, */*; q=0.01
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Connection  keep-alive
Content-Type    application/json; charset=utf-8
Cookie  (removed)
Host    (removed)
Referer (removed)
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
X-Requested-With    XMLHttpRequest

RESPONSE:
Cache-Control   private, max-age=0 …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax jquery webmethod

5
推荐指数
1
解决办法
2106
查看次数

在ASPX页面中使用webmethod服务AJAX请求

我正在尝试使用.aspx页面中的方法为AJAX请求提供服务.出于某种原因,我没有得到我想要的数据.谁能告诉我我做错了什么?

mypage.aspx:

<%@ Page Language="VB" Title="My Page" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="System.Collections.Generic" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Protected Sub Page_Load(sender As Object, e As System.EventArgs)

    End Sub

    <WebMethod()> Public Function testmethod() As Integer
        Return 5
    End Function

</script>

<html>
<!--...rest of page including mybutton and myresults-->
Run Code Online (Sandbox Code Playgroud)

JQuery的:

$("#mybutton").click(function() {
    $.ajax({
      type: "POST",
      url: "mypage.aspx/testmethod",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        alert("success");
        $("#myresults").html(msg.d);
      },
      error: function(msg) {
        alert("error:" …
Run Code Online (Sandbox Code Playgroud)

vb.net jquery asp.net-ajax asp.net-3.5 webmethod

5
推荐指数
1
解决办法
1万
查看次数

如何使用asp.net WebMethod处理FormData AJAX帖子(带有附加参数的文件)

无法将FormData的jQuery AJAX帖子处理到ASP.net 4 Web服务WebMethod.

<input id="ipt_file" type="file" />
<a href='#' onclick="UploadFile();" data-role='button'>Upload</a>
Run Code Online (Sandbox Code Playgroud)
var UploadFile = function () {
    var file_object = $('#ipt_file')[0].files[0];
    var form_data = new FormData();
    form_data.append('job_id', '123456');
    form_data.append('job_name', 'xyx');
    form_data.append('job_file', file_object);

    var xhr_upload = $.ajax({
        type: "POST",
        headers: { "Cache-Control":"no-cache", "Content-Type":"multipart/form-data" }, // also tried without these
        url: "../MyServices.asmx/Upload",
        data: form_data,
        processData: false,
        contentType: false,
        dataType: "json",
        success: function (msg) {
            if (typeof (msg) === "object") {
                var _upload = $.parseJSON(msg.d);
                alert(_upload.status + ': ' + _upload.msg);
            }; …
Run Code Online (Sandbox Code Playgroud)

asp.net jquery form-data asmx webmethod

5
推荐指数
2
解决办法
5562
查看次数

ajax发送FormData c#WebMethod

我有一个带有文件输入和一个按钮的表单,当我按下按钮时,文件应该转到服务器端。

当我向服务器发送文件时,ajax 响应成功,永远不要停在我使用的 c# webmethod 断点处。我做错了什么?

表单:(Default.aspx)

<form id="form1" runat="server" enctype="multipart/form-data">
    <div align="center" class="divBody">
        <div id="controlHost">
            <div id="outerPanel">
                <table width="100%" cellpadding="2" cellspacing="5">
                    <tr align="left">
                        <td colspan="2">
                            <span class="message">Seleccione el archivo que desea subir</span>
                        </td>
                    </tr>
                    <tr align="left">
                        <td valign="top">
                            <input type="file" id="FileInput" multiple="false" class="fileInput" />
                        </td>
                        <td align="right">
                            <input type="button" id="btnUpload" name="btnUpload" value="Upload" onclick="sendFile();" class="button" />
                        </td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

脚本:(默认.aspx)

function sendFile() {
    var data = new FormData();
    var file = $("#FileInput")[0].files[0];
    data.append("name", file.name);
    data.append("size", file.size); …
Run Code Online (Sandbox Code Playgroud)

c# ajax jquery file webmethod

5
推荐指数
1
解决办法
4321
查看次数

使 WebMethod 异步 Web 表单

我有大量的[WebMethod]整个应用程序,我希望我所有的[WebMethod]都是异步的。我[WebMethod]用 async 和 await 关键字装饰了我所有的签名,然后运行我的应用程序。它没有按预期进行。假设我有以下代码

背后的代码

[WebMethod]
public static async Task<List<XXX>> GetXXX()
{
    return await new BusinessLogic().GetXXX().ConfigureAwait(false);
}
Run Code Online (Sandbox Code Playgroud)

业务层

    internal async Task<List<XXX>> GetXXX()
    {
        var obj = await objDAL.GetXXX().ConfigureAwait(false);
        List<XXX> listDO = new List<XXX>();
        foreach (var item in obj)
        {
            listDO.Add(new Countries
            {
                XXXName = item.name,
                XXXID = item.id
            });
        }
        return listDO;
Run Code Online (Sandbox Code Playgroud)

objDAL.GetXXX

    internal async Task<List<tblXXX>> GetXXX()
    {
        using (ABCEntities ctx = new ABCEntities())
        {
            return await ctx.tblXXX.ToListAsync().ConfigureAwait(false);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经将调试器放在上面代码到达的整个路径中return await …

c# asp.net asynchronous webforms webmethod

5
推荐指数
1
解决办法
792
查看次数