URL的Path.Combine(第二部分)
现在有一段时间,我一直在搜索一种在URL上使用的路径方法.这与 path.combine for urls?有一个很大的差异. 我将用一个示例说明.说我们有一个基本网址:http://example.com/somefolder和一个文件:foo.txt.因此,完整的路径将是:http://example.com/somefolder/foo.txt.听起来很简单,对吗? ha. 我尝试了URI类:Uri.TryCreate(new Uri("http://example.com/somefolder"), "foo.txt", out x);导致"http://example.com/foo.txt". 然后我尝试了路径:System.IO.Path.Combine("http://example.com/somefolder", "foo.txt");导致"http://example.com/somefolder\foo.txt" ...近距离...但仍然没有.
0 2024-04-17
编程技术问答社区
Uri.TryCreate对任何字符串值都返回true?
我正在尝试使用uri.trycreate方法来验证URI,当我用无效的字符串调用它时,该方法返回true.有什么想法吗?我的代码如下: private void button1_Click(object sender, EventArgs e) { Uri tempValue; if (Uri.TryCreate("NotAURL", UriKind.RelativeOrAbsolute, out tempValue)) { MessageBox.Show("?"); } } 解决方案 这是一个有效的相对URL.无效URI的一个示例是: "http://example.com" 如果仅允许绝对uris,请使用UriKind.Absolute. 示例将无法解析.
0 2024-04-17
编程技术问答社区
从基础URI创建新的URI和相对路径斜杠有什么区别?
为什么使用 new Uri(baseuri,seluterpath)? 该构造函数通过组合baseuri和相对图来创建一个URI实例. and, 如何将相对路径安全地/始终如一地附加到URI? ? var badBase = new Uri("http://amee/noTrailingSlash"); var goodBase = new Uri("http://amee/trailingSlash/"); var f = "relPath"; new Uri(badBase, f) // BAD -> http://amee/relPath new Uri(goodBase, f) // GOOD -> http://amee/trailingSlash/relPath 即使最初的URI没有拖延的斜线,所需的输出也是"好"的情况. 解决方案 为什么使用新的URI(baseuri,相对路径)时斜线会有所不同? 好吧,这就是网络上发生
0 2024-04-17
编程技术问答社区
如何在App.Config中写一个URI字符串
我正在制作Windows Service. Service必须每天晚上don负载某些东西,因此我想将URI放在app.config中,以防万一我需要更改它. 我想在我的app.config中写一个uri.是什么使它无效,我该如何处理? 我的错误: - Entity 'login' not defined - Expecting ';' - Entity 'password' not defined - Application Configuration file "App.config" is invalid
0 2024-04-17
编程技术问答社区
正则表达式~将UNC转换为URL
我正在寻找解决这个问题的紧张的正则解决方案.我希望将UNC重新格式化为URI 问题: 需要将目录重新格式化为URI \\ server \ d $ \ x \ y \ z \ aaa 需要看起来像: http://server/z/z/aaa 解决方案 我认为,在这种情况下,替换比Regex更容易编写和理解.给定: string input = "\\\\server\\d$\\x\\y\\z\\AAA"; 您可以双重替换: string output = String.Format("http:{0}", input.Replace("\\d$\\x\\y", String.Empty).Replace("\\", "/")); 其他解决方案 .net框架支持一个名为 system.uri 可以进行转换.它更简单,可以处理逃生案例.它可以处理UNC的局部路径,通往URI格式. c#: Console.WriteLi
0 2024-04-16
编程技术问答社区
使用WebClient来访问本地文件
i开发了一个C#应用程序,该应用程序需要通过HTTP,FTP和有时还可以访问许多不同的内容来源(File://). . 我想以一种统一的方式通过不同的协议访问这些文件,因此我选择了WebClient来执行此操作. 它适用于MSDN(FTP,HTTP,Local Files等)上的所有不同协议,但随后出现问题...在几个成功的请求之后,我只是无法使用URI访问任何文件本地文件(file://c:\ some_dir \ somefile.ext). 我已经检查了URI是正确的,如果我在浏览器中输入它,则可以轻松打开文件.我已经认识到一件非常有趣的事情 - 它在本地文件的开头也很好地工作.如果我尝试使用WebClient加载本地文件的内容,就在开始时,一切都很好. 我的程序看起来像这样: 主线程启动 主线程上的一些初始化 多个线程从不同来源下载内容 等待所有线程完成 单线处理嫁妆的东西 正如我之前所描述的,如果我将我的webclient.downlo
0 2024-04-16
编程技术问答社区
Uri.EscapeUriString()中关于重音字符的问题
如果我尝试在诸如"percepção"之类的重音字符的功能中放置一个URL,则它将输出" Percep%C3%A7%C3%A3O",但无法正常工作.但是," percep%e7%e3o"确实可以按照应有的方式工作. String Result = Uri.EscapeUriString("Percepção"); 预先感谢. 解决方案 我只是通过将原始字符串编码为ASCII字节来解决此问题,然后将其编码回UTF8. String Result = Uri.EscapeUriString(Encoding.UTF8.GetString(Encoding.ASCII.GetBytes("Percepção"))); 感谢BinaryCoder提供的更多详细信息. 其他解决方案 首先将字符串编码为UTF-8,然后将字节变成字面字符或百分比编码的序列. 可以通过将EscapeUriString的结果与: 进行比较,可以看到这一点. Console.W
0 2024-04-16
编程技术问答社区
在单声道上获得一个带有逃逸斜线的Uri
更新:一个修复程序现在已经进入了 mono .这是个好消息! 更新:添加了逻辑以修复片段处理. 我正在尝试使用URI类在单声道上发送带有编码斜线的请求.这基本上是问题是,类似于.NET的单声道将在构造时在URI中发现的任何斜线.该逻辑最初是在适当的,以消除如果路径被逃脱而未检测到可能发生的漏洞. 在上一篇文章中,有一个黑客,该黑客通过反射显示在基础URI类上的设置标志,该反射迫使逃脱的斜线被单独留下.此行为已固定在.NET 4.5中,默认情况下允许逃脱的斜线(如我在评论中提到的那样). 我试图在单声道上做同样的事情,但是由于URI类的内部词不同,因此失败了.我想出了这种方法来实现我想要的东西,但它有效,但它非常骇人. 课程程序 { 静态void main(string [] args) { var uri = new Uri(" http://www.yahoo.com/%2F?foo = bar%2F#frag "); urihelper.forcecan
0 2024-04-16
编程技术问答社区
链接资源中的图像网址
我想从c#邮件中的URL嵌入图像,我尝试使用此代码,但它不起作用 LinkedResource logoHeader = null; AlternateView av1 = AlternateView.CreateAlternateViewFromString(strBody, null, MediaTypeNames.Text.Html); logoHeader= new LinkedResource("some xyz.com"); logoHeader.ContentId = "logoimage"; av1.LinkedResources.Add(logo); 解决方案 string image = "example.com/image.jpg"; var webClient = new WebClient(); byte[] imageBytes = webClient.DownloadData(image); MemoryStream ms = new
0 2024-04-16
编程技术问答社区
从winform中用URI启动一个应用程序
我有一个URI启动默认程序,我正在尝试弄清楚如何从Windows表单应用程序启动它. Google上的所有结果都使用Windows Apps API启动URI,但我需要从表单中进行.如何才能做到这一点? 这是应用程序版本: System.Uri uri = new System.Uri("myprotocl://10.0.0.123"); var success = await Windows.System.Launcher.LaunchUriAsync(uri); 解决方案 假设您在计算机上注册了" MyProtocl"的"处理程序",则可以通过将URI指定为流程的文件名来启动URI. var url = "myprotocl://10.0.0.123"; var psi = new ProcessStartInfo(); psi.UseShellExecute = true; psi.FileName = url; Process.Start(psi);
0 2024-04-15
编程技术问答社区
Uri.IsWellFormedUriString需要更新?
我想我可能已经在uri.iswellformeduristring方法中发现了一个错误,这可能是因为它仅符合我认为发生的任何非us-ascii角色都会使其失败,因此在其中带有类似字符的字符的URL都会使其返回false.由于现在允许使用这些字符( wikipedia 等等他们.下面的正则是RFC 3986. 您怎么看?应该更新URI类吗? 无论如何,这是一些示例代码,显示出错误: static void Main(string[] args) { var urls = new [] { @"/aaa/bbb/cccd", @"/aaa/bbb/cccæ", @"/aaa/bbb/cccø",
0 2024-04-15
编程技术问答社区
System.Uri和编码的冒号(:)。
.NET 4.5之前,似乎System.URI将未编码斜线,但此后已修复.参考: https://stackoverflow.com/a/a/a/20733619/188740 我遇到了结肠同样的问题. System.URI仍然没有编码的结肠.示例: var uri = new Uri("http://www.example.com/?foo=http%3A%2F%2Fwww.example.com"); var s = uri.ToString(); //http://www.example.com/?foo=http:%2F%2Fwww.example.com 注意%3A如何通过system.uri切换到:.这是一个错误吗?最好的解决方法是什么? 解决方案 使用Uri.AbsoluteUri如何? var s = uri.AbsoluteUri; // http://www.example.com/?foo=http%3A%
0 2024-04-15
编程技术问答社区
没有尾部斜线的基础Uri
如果我使用UriBuilder创建Uri这样: var rootUrl = new UriBuilder("http", "example.com", 50000).Uri; 然后 http://example.com:50000/ 我想要的是在不拖延的情况下创建一个Uri对象,但似乎不可能. 我的解决方法是将其作为字符串存储,然后做类似这样的丑陋的事情: var rootUrl = new UriBuilder("http", "example.com", 50000).Uri.ToString().TrimEnd('/'); 我听说人们说没有拖延的斜线,URI就无效.我认为这不是真的.我已经浏览了RFC 3986,在第3.2.2节中说: 如果URI包含权威组件,则路径组件 必须是空的,或者以斜杠("/")字符开始. 它并不是说拖延必须在那里. 解决方案 在任意URI中,Tailing Slash不是必需的,但它是 canonical
0 2024-04-14
编程技术问答社区
当请求的长度超过320个字符时,我得到一个400坏请求-无效的Url。
不确定原因是什么.在web.config中添加了以下内容. maxUrllength =" 1024" maxqueryStringLength =" 1024" requestPathinvalidcharacters ="" MaxRequestLength =" 1024" sleakeedurltofilesystemmapping =" true" 我编码URI参数并发送请求,但始终获得无效的URL. Url: http://localhost:51840/api/xxxxxxx/xxxxxxxxxxxxxx/n4cef3om0lc0q8i6ome0xdho8evxnoeyc06a 2BGBEI%252FBW6I0DWQ6%252B3DK6YJS1UZQQQICQYE6QQVX8BJT% whfjiatzwwspc%252BFO6BITTFA%253d%253d 如果将URL减少到以下内容,则可以正常工作. http://localhost :51840/api/xxxx
0 2024-04-14
编程技术问答社区
从任何URL获得准确的域名
我需要从任何URL提取确切的域名. 例如, url: http://www.google.com - > domain:google.com url: http://www.google.co.uk/path1/path1/path1/path22 - >域:google.co.uk 在C#中怎么可能?是否有完整的TLD列表或该任务的解析器? 解决方案 您可以使用 uri类访问所有组件URI: var uri = new Uri("http://www.google.co.uk/path1/path2"); var host = uri.Host; // host == "www.google.co.uk" 但是,没有内置的方法可以剥离" www"" www.google.co.uk".您需要实现自己的逻辑,例如 var parts = host.ToLowerInvariant().Split('.'); if (parts.Len
2 2024-04-14
编程技术问答社区
在.NET中把URI路径转换为相对文件系统路径
如何将绝对或相对URI路径(例如/foo/bar.txt)转换为.NET中的(例如)相应的相对文件系统路径(例如foo\bar.txt)? 我的程序不是ASP.NET应用程序. 解决方案 您是否已经尝试过Server.MapPath? 还是Uri.LocalPath属性?类似以下内容: string uriString = "file://server/filename.ext"; // Lesson learnt - always check for a valid URI if(Uri.IsWellFormedUriString(uriString)) { Uri uri = new Uri(uriString); Console.WriteLine(uri.LocalPath); } 其他解决方案 我想出了这种方式,从相对或绝对URI和基本路径产生完整的绝对文件系统路径. with: Uri basePathUri = new
0 2024-04-14
编程技术问答社区
疯狂的网络浏览器
编辑:最初的问题是一个长期存在的,有很多狂野的猜测.我把它切成了剩下的奥秘. 我整天都在挣扎和困惑,猜想我应该向社区提出我的问题. 它起源于登录用户时,他没有屏幕了.因此,任何阅读屏幕的尝试都会失败.如果使用窗口句柄,结果是黑框,则使用copyfromscreen a gdi-error例外. 但是,程序窗口仍然存在,并且使用DrawToBitmap即使登录用户也可以正常工作. 这是条件和剩下的问题: 用户不得以任何方式触摸/单击WebBrowser.如果他这样做,例如,滚动,单击,导航subsqeuent DrawToBitmap呼叫导致一个空盒子. WebBrowser保持未触及时,在下一个drawtobitmap呼叫之前就足以进行Refresh. 触摸它后,通过执行webBrowser1.Url = new Uri(URLpath); 再次加载URL是必不可少的 在导航新URL时必须存储此操作.我在导航的事件中这样做. 无论如
0 2024-04-14
编程技术问答社区
Url Unicode字符编码
如何编码包含Unicode的URL?我想将其传递到命令行实用程序,我需要先编码它. 示例:http://zh.wikipedia.org/wiki/白雜訊 变成http://zh.wikipedia.org/wiki/%E7%99%BD%E9%9B%9C%E8%A8%8A. 解决方案 您可以使用var encoded = HttpUtility.UrlPathEncode("http://zh.wikipedia.org/wiki/白雜訊"); 其他解决方案 根据MSDN,您不能再使用urlpathencode. 所以,正确这样做的方法是, var urlString = Uri.EscapeUriString("http://zh.wikipedia.org/wiki/白雜訊"); 其他解决方案 Server.UrlEncode(s); .net字符串是本地的Unicode字符串(特定于UTF-8编码),因此您只需要调用httpserv
0 2024-04-13
编程技术问答社区
为什么System.Uri不能识别本地文件路径的查询参数?
我需要添加一些其他查询信息作为查询参数 在文件处理过程中以后解析路径.我虽然那个 system.uri 类可以为我提供帮助,但看起来它并没有给我我对本地文件路径的期望. var fileUri = new Uri("file:///c://a.txt?select=10") // fileUri.AbsoluteUri = "file:///c://a.txt%3Fselect=10" // fileUri.Query = "" var httpUri = new Uri("http://someAddress/a.txt?select=10") // httpUri.AbsoluteUri = "http://someaddress/a.txt?select=10" // httpUri.Query = "?select=10" 在" ftp://someaddress/a.txt?select = 10"的情况下 - 查询字符串也为空 我明白 system.uri
0 2024-04-13
编程技术问答社区