解決中文地址Uri.IsWellFormedUriString返回false
數字和大小寫字母都ok,但是中文地址就會有問題
public bool IslocalURL(string url)
{
if (string.IsNullOrEmpty(url))
{
return false;
}
Uri absoluteUri;
if (Uri.TryCreate(url, UriKind.Absolute, out absoluteUri))
{
return String.Equals(this._httpContext.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase);
}
else
{
bool isLocal = !url.StartsWith("http:", StringComparison.OrdinalIgnoreCase)
&& !url.StartsWith("https:", StringComparison.OrdinalIgnoreCase)
&& Uri.IsWellFormedUriString(url, UriKind.Relative);
return isLocal;
}
}
解決辦法:
利用 Uri.EscapeUriString(String) Method
Converts a URI string to its escaped representation.
public static string EscapeUriString (string stringToEscape);.
//解决中文url 不会触发301
pageUrl = Uri.EscapeUriString(pageUrl); //301 (permanent) redirection
if (webHelper.IslocalURL(pageUrl))
{
filterContext.Result = new RedirectResult(pageUrl, true);
}
參考:
https://docs.microsoft.com/zh-cn/dotnet/api/system.uri?redirectedfrom=MSDN&view=netframework-4.7.2
解決中文地址Uri.IsWellFormedUriString返回false的更多相关文章
- [C#] 與Android共舞–透過GET方式傳資料給Server(含解決中文編碼問題) (转帖)
		上一篇文章分享了透過POST 方式傳資料回Server,這一篇來談談有關於透過GET的方式傳遞 首先,如我預期的一樣,透過網址傳遞,會產生編碼問題,這邊我就順代解掉,希望有碰到的人 可以不用為此煩惱. ... 
- 解決BufferedReader读取UTF-8文件中文乱码
		解決BufferedReader读取UTF-8文件中文乱码 File rst01 = new File(context.getRealPath("/")+" ... 
- 判断是否含有中文,包含返回true,不包含返回false
		/** * 功能:判断是否含有中文,包含返回true,不包含返回false */ function isChina(s) { var patrn = /[\u4E00-\u9FA5]|[\uFE30- ... 
- 終于解決调用wordpress 4.3 xmlrpc api 发布包含分类的文章时返回“抱歉,文章类型不支持您的分类法”错误的問題
		這個問題我找了很多資料都沒有明說是如何解決,后來突發奇想得出我的解決方案如下,所以特此記錄一下: object postId = blogService.NewPost(0,"admin&q ... 
- 记”Uri.IsWellFormedUriString”中的BUG
		场景 先上逻辑代码 1: /// <summary> 2: /// 图片真实地址 3: /// </summary> 4: public string FullImagePat ... 
- FtpClient.storeFile返回false解决方法
		在确定路径和文件名没有中文的情况下添加以下代码 ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE); ftp.enterLocalPassiveMode();/ ... 
- php中curl返回false的解决办法
		本文介绍一下自己在使用curl中遇到的问题解决办法.希望可以帮助到大家. 原文地址:代码汇个人博客 http://www.codehui.net/info/37.html 首先来看一个封装的curl函 ... 
- C#からネイティブDLLを呼び出す場合のVSからのデバッグのジレンマを解決する
		「C#を使う最大のメリットって.やっぱり.Visual Studioですよね!」って自信を持って言いたいですね. という心境ではあるんですが.私の仕事はどっちかというとC++よりなので.どうしても.D ... 
- php  json_encode 返回false
		今天用ajax请求不到数据,发现问题出现在最后一句 echo json_encode($data); var_dump(json_encode($data));输出false 使用json_last_ ... 
随机推荐
- PAT (Advanced Level) Practise 1002 解题报告
			GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 ... 
- Xamarin Essentials教程屏幕常亮ScreenLock
			Xamarin Essentials教程屏幕常亮ScreenLock 在一段时间内,如果用户没有对设备进行操作,设备就会自动关闭屏幕.用户必须手动操作,才能点亮屏幕.但是很多应用需要在用户没有操作 ... 
- Codeforces Round #541 (Div. 2) (A~F)
			目录 Codeforces 1131 A.Sea Battle B.Draw! C.Birthday D.Gourmet choice(拓扑排序) E.String Multiplication(思路 ... 
- Codeforces.449D.Jzzhu and Numbers(容斥 高维前缀和)
			题目链接 \(Description\) 给定\(n\)个正整数\(a_i\).求有多少个子序列\(a_{i_1},a_{i_2},...,a_{i_k}\),满足\(a_{i_1},a_{i_2}, ... 
- IDEA+Maven:cannot download sources
			把IDEA的maven换成maven2 
- python网络编程(十三)
			协程-greenlet版 为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单 安装方式 使用如下命令安装greenlet模块: sudo pip ... 
- 点击时出现某个样式,1s后移除该样式的案例效果
			这里为了使效果更好的让用户体现出来,点击时添加的样式为background:yellow;1后移除该样式: 案例demo为: <!DOCTYPE html> <html lang=& ... 
- Mac下nodeJS初体验
			Mac下nodeJS初体验 这两天博主出门在外,抽空体验一下大名鼎鼎的node 安装 brew install node 安装测试 $ node -v v8.4.0 运行本地脚本 用文本编辑器编辑一段 ... 
- linux 时间同步的2种方法(转)
			linux 时间同步的2种方法 张映 发表于 2012-10-23 分类目录: 服务器相关 标签:linux, ntp, 同步, 时间服务器 由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误 ... 
- Android定制:修改开机启动画面
			转自:https://blog.csdn.net/godiors_163/article/details/72529210 引言 Android系统在按下开机键之后就会进入启动流程,这个过程本身需要一 ... 
