asp.net的Web服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net的Web服务器相关的知识,希望对你有一定的参考价值。

参考技术A

ASP .NET不能只被看做是 Active Server Page (ASP) 的下一个版本,而且是一种建立在通用语言上的优秀程序构架,而且可以运行于多种平台的WebServer之上。 Cassini/CassiniDev
Cassini 是一个开源项目。是一个独立的ASP .NET运行环境。
WebServer
Visual Studio 自带的Web Server也可以运行ASP .NET应用,Web Server是为了方便开发者快速启动及调试网站的产品,后期被IIS Express取代。
IIS Express
IIS Express被集成到了Visual Studio及WebMatrix之中,方便用户以“集成模式”来调试ASP .NET应用程序。 IIS
IIS指 Internet Information Services(因特网信息服务)。IIS 是 Windows 系统的捆绑的免费组件。
Apache
经典的Web应用程序承载应用,可以通过在Windows下使用.NET或者在其它操作系统中使用Mono来使ASP .NET应用程序运行起来。
XSP
XSP 是一个有着独立标准的 web server,它使用C# 编写,可以用来运行ASP .NET应用程序。XSP 可以在 Mono 以及 Microsoft .NET运行时之下正常工作。  
nginx
Nginx是一个高性能的 HTTP 服务程序,它支持ASP .NET 以及 ASP .NET MVC Web 应用程序,通过FastCGI。
Jexus
Jexus是一款基于dotNET/Mono环境,直接支持ASP.NET的免费的WEB服务器系统。

使用 ajax asp.net 调用 Web 服务

【中文标题】使用 ajax asp.net 调用 Web 服务【英文标题】:Call a web service whith ajax asp.net 【发布时间】:2021-05-27 15:17:01 【问题描述】:

我有一个问题:

我尝试调用一个用 VB.NET 编写的 Web 服务:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports Newtonsoft.Json
<System.Web.Script.Services.ScriptService()>
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")>
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<ToolboxItem(False)>
Public Class WebService1
    Inherits System.Web.Services.WebService

 <WebMethod()>
    Public Function Popola(cia As String) As Object

        Dim p1 As New Persona
        p1.cognome = cia
        p1.nome = "mario"
        p1.eta = 22

        Dim p2 As New Persona
        p2.cognome = "bianchi"
        p2.nome = "luca"
        p2.eta = 99

        Dim list As New List(Of Persona)
        list.Add(p1)
        list.Add(p2)

        Return JsonConvert.SerializeObject(list, Formatting.Indented)

    End Function

之所以有效,是因为我在其他程序中使用它。

问题是在另一个程序WebForm1.aspx 中,我尝试用Ajax 调用它

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication2.WebForm1" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" />
    <link href="StyleSheet1.css" rel="stylesheet" />
    

    

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function () 
            $("#button_login").click(function ()           // al click del bottone
                $.ajax(
                    type: "POST",                   // il method
                    url: "http://localhost/WebService1.asmx/Popola",                // la action

                    data:  cia: 88 ,
                    contentType: "application/x-www-form-urlencoded",
                    dataType: "json",
                   
                    success: function () 
                        alert("ok")
                       

                    ,
                   
                    error: function () 
                        console.log(arguments);
                        console.log("error");
                    
                );

            );
        );
    </script>
</head>
<body>

    <form runat="server">
        <div class="container">
            <div class="row">
                <div class="col-sm-6">

                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    <asp:Button ID="button_login" runat="server" Text="Button" />

                </div>

            </div>
        </div>
    </form>
</body>
</html>

但是每次它进入Ajax,我都会从函数中得到一个错误:

从源“http://localhost”访问“http://localhost/WebService1.asmx/Popola”的 XMLHttpRequest 已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头请求的资源。

我能做什么?

【问题讨论】:

【参考方案1】:

据我了解,您编写的代码属于同一个项目。所以你可以像下面这样修改调用

更改下面的行

url: "http://localhost/WebService1.asmx/Popola",

url: "WebService1.asmx/Popola",

它应该可以工作。

【讨论】:

不,不幸的是,它们是 2 个不同项目的 2 个不同代码,我删除了 localhost 的代码但不同。我忘了指定 您正在编写 webmethod 的应用程序是什么类型的。你需要在那边implement CORS policy。【参考方案2】:

看来你需要使用JSONP作为数据类型和crossDomain=true如下:

$.ajax(
    type: "POST",
    url: "http://localhost/WebService1.asmx/Popola",
    data:  cia: 88 ,
    contentType: "application/x-www-form-urlencoded",
    dataType: "jsonp",
    crossDomain:true,
    success: function () 
        alert("ok");
    ,
   
    error: function () 
        console.log(arguments);
        console.log("error");
    
);

见:Ajax Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource

【讨论】:

以上是关于asp.net的Web服务器的主要内容,如果未能解决你的问题,请参考以下文章

asp.net web.config的设置问题

将文件写入 Web 服务器 - ASP.NET

没有 ASP.NET/IIS 的 .NET Web 服务?

IIS Web服务扩展中没有Asp.net 2.0

ASP.NET 4.5 尚未在 Web 服务器上注册

ASP.Net Web API 架构选择