C# 如何使用Blazor获取网页标题?

C# 如何使用Blazor获取网页标题?,c#,cors,webclient,blazor,blazor-client-side,C#,Cors,Webclient,Blazor,Blazor Client Side,我试图在Blazor中进行应用,当我试图获取任何网页的标题时,我收到错误System.PlatformNotSupportedException:此平台不支持操作。是否有其他解决方案?我也从HttpClient开始,但不知道如何做,也不知道如何在CORS授权中使用这个get错误 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.AutomaticDecompression = Deco

我试图在Blazor中进行应用,当我试图获取任何网页的标题时,我收到错误System.PlatformNotSupportedException:此平台不支持操作。是否有其他解决方案?我也从HttpClient开始,但不知道如何做,也不知道如何在CORS授权中使用这个get错误

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        var str = reader.ReadToEnd();
        Regex reg = new Regex("<title>(.*)</title>");
        MatchCollection m = reg.Matches(str);
        if (m.Count > 0)
        {
            return m[0].Value.Replace("<title>", "").Replace("</title>", "");
        }
        else
            return "";
    }
HttpWebRequest-request=(HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression=DecompressionMethods.GZip | DecompressionMethods.Deflate;
使用(HttpWebResponse=(HttpWebResponse)request.GetResponse())
使用(Stream=response.GetResponseStream())
使用(StreamReader=新StreamReader(stream))
{
var str=reader.ReadToEnd();
Regex reg=新的Regex((.*);
MatchCollection m=注册匹配项(str);
如果(m.计数>0)
{
返回m[0].Value.Replace(“,”).Replace(“,”);
}
其他的
返回“”;
}

使用Blazor服务器端,您的代码应该可以工作,尽管HttpClient会更好

但PlatformNotSupportedException意味着您正在Blazor WebAssembly上运行此功能。您必须使用HttpClient,但是

。。。使用HttpClient[…]获取CORS授权时出错

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        var str = reader.ReadToEnd();
        Regex reg = new Regex("<title>(.*)</title>");
        MatchCollection m = reg.Matches(str);
        if (m.Count > 0)
        {
            return m[0].Value.Replace("<title>", "").Replace("</title>", "");
        }
        else
            return "";
    }
不管你用什么,这个问题都不会消失

Blazor WebAssembly受到适用于任何JavaScript或WebAssembly应用程序的标准“沙盒”安全规则的限制


您将无法随机访问站点。API站点可能允许使用CORS头进行此操作,但您自己域之外的网站将无法访问

使用Blazor服务器端,您的代码应该可以工作,尽管HttpClient会更好

但PlatformNotSupportedException意味着您正在Blazor WebAssembly上运行此功能。您必须使用HttpClient,但是

。。。使用HttpClient[…]获取CORS授权时出错

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        var str = reader.ReadToEnd();
        Regex reg = new Regex("<title>(.*)</title>");
        MatchCollection m = reg.Matches(str);
        if (m.Count > 0)
        {
            return m[0].Value.Replace("<title>", "").Replace("</title>", "");
        }
        else
            return "";
    }
不管你用什么,这个问题都不会消失

Blazor WebAssembly受到适用于任何JavaScript或WebAssembly应用程序的标准“沙盒”安全规则的限制


您将无法随机访问站点。API站点可能允许使用CORS头进行此操作,但您自己域之外的网站将无法访问

相关但不完全重复:相关但不完全重复: