【问题标题】:How to add a [WebMethod] file for WebService1.asmx?如何为 WebService1.asmx 添加 [WebMethod] 文件?
【发布时间】:2021-10-07 06:13:04
【问题描述】:

我有一个 C# 中的服务器端项目。 我正在连接到 SQL Server 并希望将参数传递给表。

如何打开 WebMethod 文件?我在任何地方都找不到 既不是 WebService 项目。

附注
我读到 WebService asmx 已过时,但通过使用 ASP.NET Core Web API 项目,我将无法在 Chrome 浏览器中从服务器端向 SQL 传递参数。

先谢谢了。

【问题讨论】:

  • ASP.NET Core Web API 项目我将无法向 SQL 传递参数 - 你认为 netcore 不支持参数化 SQL?
  • @CaiusJard 每个人都在告诉我别的事情。我什至没有设法在 chrome 中打开我的 ASP.NET Core Web API(与 asmx 相同的代码项目)。我没有使用 Entity Framework Core。我想要的只是 WebMethod 的帮助,稍后你/我会看到关于 ASP.NET Core Web API 的其他问题
  • 我之前在做Asp.net,建议大家不要花时间学习,马上切换到Asp.net core :)
  • @AFarmanbar 我已经学过 WebService ,我必须通过 chrome 向 SQL 发送参数。 ASP.NET Core Web API 对我来说是新的,我不知道它的限制,我现在遇到了麻烦,如果你能在 Discord 中帮助我,我将不胜感激。

标签: c# asp.net .net web-services webmethod


【解决方案1】:

我想你可能有点困惑; [WebMethod] 不是一种文件类型,它是您应用于服务中的方法以将它们标记为可用于远程调用的属性。将属性添加到方法后,它将出现在服务的 Web 服务定义中导出的方法列表中

using System;
using System.Web;
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService
{
    public Service ()
    {

    }


    [WebMethod]
    public string GetTime()
    {
        return DateTime.Now.ToString("HH:mm:ss");
    }

    public string GetDate()
    {
        return DateTime.Today.ToString("yyyy-MM-dd");
    }
}

如果你运行这个,你会看到:

GetTime,但没有 GetDate,因为 GetDate 未标记为网络方法

ASMX 已经很老了——它很简单,但是很老了。如今,甚至越来越少有人创建基于 XML 的 Web 服务(唉),但如果他们这样做了,他们可能使用 WCF,而不是 ASMX

我建议您切换到 netcore API;模板开箱即用——我认为你会得到一个天气预报——你可以创建一个新项目,点击播放,它就可以工作了。您可以使用例如与它进行交互邮递员或失眠症。你可以添加新的操作,它确实支持对 SQL 的参数化查询,你不需要 EF.. 而且它将是基于 JSON 的,这几乎是现代网络的发展方向

【讨论】:

  • 我遇到了麻烦How do I open a WebMethod file ? 是什么意思。无论哪种方式。
  • 所以我只需要在我的 ShopWebApplication1 项目中添加一个带有这样编码的 cs 文件吗?如您在上面看到的,我有 WebService1.asmx 文件,如何在这两个文件之间连接?
  • 我试图在 Visual Studio 2019 项目中找到 WCF 但找不到。至于 net core WEB API,我尝试在 chrome 中打开它,但是我被告知即使使用 Postman,我也无法将参数发送到 SQL Server。我必须准确地处理我正在做的事情,而不是从一种方法跳到另一种方法。
  • 你不要“把两者联系起来”,你把webmethods写在asmx关联的代码文件中。双击 AMSX 或右键单击它并选择代码视图。 WCF 也很旧。我不太确定您怎么会无法打开它;您只需创建一个新的 Web API 项目并按下播放键。但重要的是要注意它不会在浏览器中做任何明显的事情; Web 服务不是供浏览器使用的 - 它们是 脚本 使用的网站,而不是人类
  • 如果您正在谈论使用来自另一个项目的现有 ASMX WebService1,请右键单击 References 节点并选择添加服务/Web 引用,然后将 URL 放入 asmx
【解决方案2】:

我通过打开一个新项目解决了这个问题:ASP.NET Empty Web Site
我将它添加为“Web 服务 (ASMX)”的新项目,它在 App_Code 文件夹中创建了一个 WebService.asmx 文件和一个 WebService.cs 文件。

我之前在这个问题中打开的 ASP.NET Web Application 在我添加的 ASMX 文件中构建了一个 WebMethod
如此处所示 -

WebService1.asmx

Public Class WebService1
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

End Class

我不熟悉如何在其中实现 webMethods 的约定。
如果您知道如何以这种方式写&lt;WebMethod()&gt; _,我将不胜感激:)

谢谢

【讨论】:

  • 那是VB。您标记了您的问题 [c#]
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多