c#,c语言怎么学

在我的WebAPI项目中,重定向有一些问题。 这是因为Uri.ToString )方法的行为是“防御性的”。 换句话说,调用所提到的方法时,将对查询字符串的安全部分进行解码。

考虑以下不合格的单元测试。

使用系统;

using Microsoft.visual studio.test tools.unit testing;

namespace UriTest

{

[TestClass]

公共类单元测试1

{

[TestMethod]

公共语音测试方法1 (

{

//Arrange

const string expectedUrlRaw=

' http://localhost/abc? proxy=http://target.nl? param1=value1&; param2=value2';

conststringexpectedurlinhttpsraw=

' https://localhost/abc? proxy=http://target.nl? param1=value1&; param2=value2';

uriexpecteduri=new uri (expectedurlraw;

uriexpecteduriinhttps=new uri (expectedurlinhttpsraw;

//Act

stringreturnsuriinhttpsraw=expected uri.tohttps ().ToString );

//Assert

assert.are equal (expectedurlinhttpsraw,returnsUriInHttpsRaw;

}

}

publicstaticclassstringextensions

{

publicstaticuritohttps (thisuriuri )。

{

uribuilderuribuilder=new uri builder (uri );

uri builder.scheme=uri.urischemehttps;

uriBuilder.Port=443;

return uriBuilder.Uri;

}

}

}

由于当前无法控制Uri属性,因此无法构建自己的链接来更改此行为。

在我的控制器上,响应get消息以重定向呼叫:

httpresponsemessageresponse=request.create response (http status code.found );

response.headers.location=//myuriobject

这在一定程度上可以正常工作。 如果重定向Uri包含包含编码链接的查询,则会返回错误的结果。 (这可能是因为Headers.Location通过对此属性调用ToString来读取的。

有没有人在考虑如何解决这个问题?

谢谢

浏览方案

Uri.ToString ()确保对URL编码的序列进行解码。 例如,=空格)。

. net框架的不同版本之间的行为也会发生变化。

也就是说,请使用Uri.ToString (而不是,Uri.AbsoluteUri或Uri.OriginalString )。

有关详细信息,请参阅以下文章

3359 DHV ik.blogspot.com/2019/12/uri tostring-automatically-decodes-URL.html

java.net.URI.create异常- java

Java.net.uri.create (http://ad server.adtech.de/adlink|3.0 ) )。 投Java.net.urisyntaxexception : illegalcharacterinpathatindex 32:http://ad server.adtech.de/adlink|3.0,但…tos tos tttos

我有以下两个班。 如下。 为了简单起见,只给出了toString重写的方法。 public class circle { @ overridepublicstringtostring () ) { return 'Circle; } publicclasscylinderextendscircle { @ override pub…将'.tostring (“- c”)用于数字变量

将数值转换为. ToString ()时省略string有什么缺点吗? int i=1234; 字符串s; //Instead of s='i is ' i.ToString (; //Writing s='i is ' i; 参考方案在这种情况下没有任何不同。 ' Count: … ASP.NET Web API 2的授权属性发生了什么变化? - c#

已将一组项目和单元测试从ASP.NET Web API升级到ASP.NET Web API 2。 使用自定义DelegatingHandler自定义身份验证机制。 将Thread.CurrentPrincipal和HttpContext.Current.User设置为相应的system.security.claims.claims principal。 如何根据uri确定文件的文件扩展名- java

如果给我URI,想找返回的文件的文件扩展名,用Java该做什么呢? 例如,位于http://www.daml.org/2001/08/baseball/baseball-ont的文件为http://www.daml.org/2001/08/baseball/baseball-ont

网友留言(0条)

发表评论