C# 从URL下载XML时遇到的奇怪问题
我试图使用SSIS将RSS提要中的数据加载到SQL Server数据库中,但遇到了连接问题 示例URL:https://ecf.akb.uscourts.gov/cgi-bin/rss_outside.pl 可以从web浏览器正常连接 我尝试使用这个站点作为模板,一切都很顺利,我能够连接甚至生成一个.xsd文件,但是当我运行它时,我得到了一个关于SSL\TSL证书的警告。我还尝试使用内置的Web服务任务,但在尝试下载带有证书的WSLD文件时也遇到了问题 基于这两个站点,我尝试了另一种途径,在尝试处理XML数据之前,我尝试使用C脚本任务将XML数据下载到一个文件中 使用此示例提要URL,代码运行良好:C# 从URL下载XML时遇到的奇怪问题,c#,xml,ssis,C#,Xml,Ssis,我试图使用SSIS将RSS提要中的数据加载到SQL Server数据库中,但遇到了连接问题 示例URL:https://ecf.akb.uscourts.gov/cgi-bin/rss_outside.pl 可以从web浏览器正常连接 我尝试使用这个站点作为模板,一切都很顺利,我能够连接甚至生成一个.xsd文件,但是当我运行它时,我得到了一个关于SSL\TSL证书的警告。我还尝试使用内置的Web服务任务,但在尝试下载带有证书的WSLD文件时也遇到了问题 基于这两个站点,我尝试了另一种途径,在尝试
WebClient webClient = new WebClient();
webClient.DownloadFile(@"http://feeds.thehollywoodgossip.com/TheHollywoodGossip?format=xml", @"C:\RSS\RSSFile.xml");
但是,当我尝试使用法庭需要的URL时,它失败了:
WebClient webClient = new WebClient();
webClient.DownloadFile(@"https://ecf.akb.uscourts.gov/cgi-bin/rss_outside.pl?format=xml", @"C:\RSS\RSSFile.xml");
法庭的URL有什么不同\错误吗?我是一个完全的C新手,所以我希望这是一个非常简单的东西。你们有没有人看到我做错了什么,或者需要与好莱坞八卦URL的例子有所不同
谢谢
编辑:这是法院URL返回的错误
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
尝试使用XMLLINQ执行以下操作。并非每个条目都有href:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
const string URL = "http://feeds.thehollywoodgossip.com/TheHollywoodGossip?format=xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(URL);
XElement feed = doc.Root;
XNamespace ns = feed.GetDefaultNamespace();
List<Entry> entries = feed.Elements(ns + "entry").Select(x => new Entry()
{
id = (string)x.Element(ns + "id"),
published = (string)x.Element(ns + "published"),
updated = (DateTime)x.Element(ns + "updated"),
href = (string)x.Descendants(ns + "href").FirstOrDefault(),
title = (string)x.Element(ns + "title"),
content = (string)x.Element(ns + "content"),
category = (string)x.Element(ns + "category"),
author = (string)x.Element(ns + "author")
}).ToList();
}
}
public class Entry
{
public string id {get;set;}
public string published {get;set;}
public DateTime updated {get;set;}
public string href {get;set;}
public string title {get;set;}
public string content {get;set;}
public string category {get;set;}
public string author { get; set; }
}
}
尝试在第一行添加此代码: ServicePointManager.SecurityProtocol=SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
您得到的错误是什么?我使用WebClient从那个url下载没有问题。@jira,你是说第二个,akb.uscourts.gov,工作正常吗?我在帖子正文中添加了这个错误,因为thorwn的内容太大,无法发表评论。是的,第二个链接可以正常工作。你的错误是由其他原因造成的。奇怪的是,我只是尝试了一台不同的计算机,更高版本的VS,但仍然得到了与上面相同的结果。从一个空白脚本任务中,我所做的只是使用System.Net添加;在顶部,然后在红色箭头之间切换URL,如图所示:哈!成功了,谢谢@scrasty。我猜我之前使用的默认任务的安全问题也是由同样的原因造成的。这看起来像是它试图解析八卦网站XML,而不是将其下载到文件中。我遇到的问题是法院的URL,结果我只需要添加一行关于安全协议的内容;看起来网站不需要任何安全保护。