【问题标题】:WebService in asp.net using visual studio 2008使用 Visual Studio 2008 在 asp.net 中的 WebService
【发布时间】:2013-05-16 03:08:52
【问题描述】:

我们知道,如果我们使用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 文件中使用它?

【问题讨论】:

标签: asp.net web-services asmx


【解决方案1】:

是的,这是可能的。

参考以下链接:

Why do asmx web services have a markup file?

<%@ 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";   
    }    
}   

【讨论】:

  • 如何从 .aspx 文件中调用方法 helloworld()?
  • 您不想从 .aspx 中调用它。我想你可能不明白什么是网络服务。
  • 我的意思是:
    将 ws 作为新的 WebService
    ws.SomeMethod(Param1,Param2)
【解决方案2】:

请参考示例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 方法应在此处列出。

【讨论】:

    【解决方案3】:

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

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多