0

众所周知,如果我们使用 Visual Studio 构建 Web 服务,Visual Studio 会自动生成两个文件,第一个是 .asmx,第二个是 .vb 作为后面的代码。

在代码后面(.vb)中我得到的是这样的:

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
 Inherits System.Web.Services.WebService

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

End Class

在 .asmx 文件中,我得到的是这样的:

<%@ WebService Language="VB" CodeBehind="~/App_Code/WebService.vb" Class="WebService" %>

问题是

  1. .asmx 文件的主要用途是什么?它只显示一行代码,有用吗?
  2. 我们可以制作一些方法是 .asmx 文件而不是 code_behind 吗?以及如何从 .aspx 文件中使用它?
4

3 回答 3

0

请参考示例 vb 编码

<%@ WebService Language="VB"  Class="WebService" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
    Inherits System.Web.Services.WebService

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

End Class

与其他 web 方法调用一样,它也列在 web 方法列表中。

左键单击您的项目添加服务参考 --> 发现 ---> 展开 + 符号

Web 方法应在此处列出。

于 2013-05-21T11:58:07.583 回答
0

对的,这是可能的。

请参考以下链接:

为什么 asmx Web 服务有标记文件?

<%@ WebService Language="C#" Class="WebService1" %>

using System.Web;      
using System.Web.Services;     

[WebService(Namespace = "http://tempuri.org/")]    
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]   
[System.ComponentModel.ToolboxItem(false)]     
public class WebService1 : WebService     
{    

    [WebMethod]     
    public string HelloWorld()   
    {      
        return "Hello World";   
    }    
}   
于 2013-05-21T11:28:59.750 回答
0

您需要手动创建 Web 引用(添加服务引用)

webservice .asmx 文件示例

<%@ WebService Language="VB"  Class="WebService" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
    Inherits System.Web.Services.WebService

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

End Class

更改我们的配置设置如下:

web.config 代码

<security mode="none">
      <transport clientCredentialType="None" proxyCredentialType="None"
             realm="" />
      <message clientCredentialType="UserName" algorithmSuite="Default" />
</security>

<security mode="TransportCredentialOnly">
     <transport clientCredentialType="Ntlm"/>
     <message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>

sample.aspx 页面代码

<%@ Import Namespace="System.ServiceModel" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%  Dim obj As New WebServiceSoapClient
        Response.Write(obj.HelloWorld1())%>
    </div>
    </form>
</body>
</html>
于 2013-05-22T10:07:04.860 回答