Tag: uri

在LINQ-to-SQL中将URI映射到String-field

我正在尝试使用LINQ将URI作为字符串存储在数据库中。 [Column(Name = “Url”, DbType = “nvarchar(255)”)] public Uri Url { get { return new Uri(_url); } set { _url = value.AbsoluteUri; } } private string _url; 这很好地映射到我的数据库设计,但是,当尝试使用此代码获取数据时: int id = 3; _serie = new DataContext(connString).GetTable(); var serie = _serie.FirstOrDefault(s => s.Id == id); 在最后一行,我得到一个例外 System.InvalidCastException: Invalid cast from System.String to System.Uri etc 我需要做什么才能在我的代码中正确处理URI,但在我的数据库中存储它是一个nvarchar(255)? 看起来很简单,但我无法弄清楚我做错了什么。

规范化URI以仅提取域名的最佳方法是什么?

例如: http://www.google.co.uk www.google.co.uk google.co.uk 将全部转换为: google.co.uk 我本来希望使用System.Uri类,但这似乎只接受带有方案的URL。

无效的URI:当url具有多个冒号时指定的端口无效

我正在使用dnsdynamic.org指向我家中托管的个人网站。 我家的ip会经常每月更换一次。 dnsdynamic.org提供了一个更新ip的web方法调用。 https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1 当我通过浏览器调用它时,它完美无缺。 当我尝试通过c#代码调用它时,它会抛出以下exception。 Invalid URI: Invalid port specified. at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.Net.WebRequest.Create(String requestUriString) 由于url中有一个冒号,它看起来像system.uri尝试将我的密码解析为整数。 我尝试在.org之后添加一个端口 https://username:password@www.dnsdynamic.org:443 没有运气。 有人可以指点我如何解决这个错误。 我在创建uri时尝试了不要逃避和逃避选项,仍然无法正常工作。 var ri = new Uri(“https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1”,true); 编辑:看起来用户名导致问题。 我的用户名是我的电子邮件地址 我的电子邮件地址以* .com结尾。 所以uri试图解析我的密码。 仍未找到解决此问题的解决方案。 我无法更改我的用户名,因为dnsdyanmic.org使用电子邮件地址作为用户名。

无法使用mailto uri创建包含多个收件人的新邮件

我正在使用在WinRT创建Windows 8.1 Store应用程序 。 我无法使用逗号或半冒号分隔每封电子邮件,使用mailto uri创建一个包含多个收件人的新邮件,两者都给出了同样的错误。 Invalid URI: The hostname could not be parsed. mailto字符串看起来像这样 “mailto:username@mail.com,username2@mail.com” “mailto:username@mail.com,username2@mail.com,” “mailto:username@mail.com, username2@mail.com” “mailto:username@mail.com;username2@mail.com” “mailto:username@mail.com;username2@mail.com;” “mailto:username@mail.com; username2@mail.com” 我已经尝试了所有这些变体,所有这些都给了我同样的错误,在新的uri时,就像这样。 var uri = new Uri(string.Format(“mailto:{0}”, mails)); 我不知道我做错了什么,或者如果没有实现,为什么它不会? 我创建了一些unit testing,看看是否有任何变化可行,但没有.. [TestClass] public class UriMailToTest { private Uri CreateMailToUri(string mail) { if (string.IsNullOrEmpty(mail)) throw new ArgumentNullException(“mail”); var uriMailTo = string.Format(“mailto:{0}”, mail); return new […]

有没有一种简单的方法从Windows Phone中的URI获取查询字符串参数?

我目前正在使用自定义URI方案来validation使用OAuth的用户。 为此,我需要从查询字符串中获取某些参数的值。 有没有一种简单的方法来获取这些信息? 或者是我唯一选择使用REGEX或其他字符串操作? 我以前发现了对ParseQueryString之类的引用,但这些引用包含在Windows Phone上不可用的库中。

Url Unicode字符编码

如何编码包含Unicode的URL? 我想将它传递给命令行实用程序,我需要先对其进行编码。 示例: http://zh.wikipedia.org/wiki/白雜訊 : http://zh.wikipedia.org/wiki/白雜訊 成为http://zh.wikipedia.org/wiki/%E7%99%BD%E9%9B%9C%E8%A8%8A 。

当我调用NavigateService.Navigate()时,Windows Phone应用程序调用MapUri()两次

我最近添加了一个自定义UriMapper,用于在从IE打开文件时将文件保存到我的应用程序隔离存储中。 这个代码看起来像这样: class AssociationUriMapper : UriMapperBase { public override Uri MapUri(Uri uri) { var tempUri = uri.ToString(); if (tempUri.Contains(“/FileTypeAssociation”)) { int fileIdIndex = tempUri.IndexOf(“fileToken=”) + 10; string fileId = tempUri.Substring(fileIdIndex); SaveFileToIsolatedStorage(fileId); return new Uri(“/MainPage.xaml”, UriKind.Relative); } return uri; } } 在InitializePhoneApplication()中我做了一个 RootFrame.UriMapper = new AssociationUriMapper(); 当然,我已经将扩展标记添加到WMAppManifest.xml 这一切都很好……但我发现了一个奇怪的行为。 每次从IE打开文件时,我都会得到两份文件。 当我在被覆盖的MapUri中放置一个断点时,每次应用程序从IE自动启动时它会被击中两次。 当我开始进一步调查时,我注意到只要我调用NavigateService.Navigate()就会发生这种情况。 但是当我调用NavigateService.GoBack时 。 有谁知道为什么会这样? 为什么在调用Navigate()时MapUri()调用了两次? 是否在创建页面的新实例时发生了什么? […]

带有方括号的Uri.EscapeUriString

这是一个奇怪的问题,但让我们看看它得到了什么样的反应…… 如果我编写控制台应用程序(VS 2013,.NET 4.5.1)并执行以下代码行: Uri.EscapeUriString(“[“) 我明白了: [ 但是如果我在我的机器上的LINQPad中执行相同的操作(好吧,技术上是Uri.EscapeUriString(“[“).Dump() ),我得到这个: %5B 为了进一步复杂化, 根据这篇文章, Uri.EscapeUriString(“[“)确实应该返回%5B 。该post写于27/06/2012。 我想也许LINQPad引用的是比VS使用的更旧的DLL,但这意味着EscapeUriString最近已经发生变化,我找不到任何记录。 有没有人对可能导致这种行为的原因有任何想法?

HttpWebRequest长URI解决方法?

我遇到了HttpWebRequest的问题,如果URI长度超过2048个字符,则请求失败并返回404错误,即使服务器完全能够为URI长的请求提供服务。 我知道这一点,因为如果通过HttpWebRequest提交错误导致错误,直接粘贴到浏览器地址栏时工作正常。 我目前的解决方法是允许用户设置一个兼容性标志,表示将参数作为POST请求发送是安全的,而不是在URI太长的情况下,但这并不理想,因为我使用的协议是RESTful和GET应该用于查询。 此外,没有任何保证协议的其他实现者将接受POSTed查询 在.Net中是否有另一个类具有与HttpWebRequest相同的function,而不受我可以使用的URI长度限制的影响? 我知道WebClient,但我真的不想使用它,因为我需要能够完全控制WebClient限制其能力的HTTP标头。 编辑 因为Shoban要求它: http://localhost/BBCDemo/sparql/?query=PREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+xsd%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%23%3E%0D%0APREFIX+skos%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0D%0APREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0APREFIX+po%3A+%3Chttp%3A%2F%2Fpurl.org%2Fontology%2Fpo%2F%3E%0D%0APREFIX+timeline%3A+%3Chttp%3A%2F%2Fpurl.org%2FNET%2Fc4dm%2Ftimeline.owl%23%3E%0D%0ASELECT+*+WHERE+{%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+dc%3Atitle+%3Ftitle+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Ashort_synopsis+%3Fsynopsis-short+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Amedium_synopsis+%3Fsynopsis-med+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Along_synopsis+%3Fsynopsis-long+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Amasterbrand+%3Fchannel+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Agenre+%3Fgenre+.%0D%0A++++%3Fchannel+dc%3Atitle+%3Fchanneltitle+.%0D%0A++++OPTIONAL+{%0D%0A++++++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Abrand+%3Fbrand+.%0D%0A++++++++%3Fbrand+dc%3Atitle+%3Fbrandtitle+.%0D%0A++++}%0D%0A++++OPTIONAL+{%0D%0A++++++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Aversion+%3Fver+.%0D%0A++++++++%3Fver+po%3Atime+%3Finterval+.%0D%0A++++++++%3Finterval+timeline%3Astart+%3Fstart+.%0D%0A++++++++%3Finterval+timeline%3Aend+%3Fend+.%0D%0A++++}%0D%0A}&default-graph-uri=&timeout=30000 以下是编码到查询字符串的以下内容: PREFIX rdf: PREFIX rdfs: PREFIX xsd: PREFIX skos: PREFIX dc: PREFIX po: PREFIX timeline: SELECT * WHERE { dc:title ?title . po:short_synopsis ?synopsis-short . po:medium_synopsis ?synopsis-med . po:long_synopsis ?synopsis-long . po:masterbrand ?channel . po:genre ?genre . ?channel dc:title ?channeltitle . OPTIONAL { po:brand ?brand . […]

如何使用WinRT打开打包文件

我试图弄清楚如何将一些解析xml文件的.Net代码移植到WinRT。 到目前为止,借助给定的System.Uri无法转换为Windows.Foundation.Uri ,我有以下代码。 不过,在我创建Uri之后,我立即陷入困境: static readonly Uri ResourcesBase = new Uri(@”ms-resource://MyAssembly/”); public override async void Load() { Uri uri = new Uri(ResourcesBase, filePath); // filePath = “Data//world.xml”; XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false }; XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings); foreach (IXmlNode xmlNode in xmlDoc.ChildNodes) { ProcessNode(xmlNode); } } 当我尝试调用XmlDocument.LoadFromUriAsyn(uri)时,我得到一个未处理的exception: ArgumentException未被用户代码处理 – […]