C# SSIS.net url编码
我需要一些关于SSIS脚本任务中URL编码的帮助 问题: 当我从SSIS脚本任务调用.net dll(具有编码逻辑)时,URL编码不起作用。但是,当我从.net控制台项目调用同一个dll时,它会按预期工作 说明: 我已经构建了一个.net函数,它是我在SSIS脚本任务中引用的dll的一部分 此.net函数接受字符串值作为参数并构建uri。我对参数值进行url编码,因为它有特殊字符,在本例中是/(正斜杠) 当我在.net控制台应用程序中引用此函数时,url编码按预期工作。但是,当我在SSIS脚本任务中引用同一个模块时,/不会被编码。目标框架是4.5(在.net dll和SSIS脚本任务中) Http请求由以下代码生成: 来自SSIS脚本任务的URl请求: 得到 来自.Net控制台应用程序的URl请求(正确的): 得到 引用的.Net DLL代码:C# SSIS.net url编码,c#,ssis,httpclient,.net-4.5,dotnet-httpclient,C#,Ssis,Httpclient,.net 4.5,Dotnet Httpclient,我需要一些关于SSIS脚本任务中URL编码的帮助 问题: 当我从SSIS脚本任务调用.net dll(具有编码逻辑)时,URL编码不起作用。但是,当我从.net控制台项目调用同一个dll时,它会按预期工作 说明: 我已经构建了一个.net函数,它是我在SSIS脚本任务中引用的dll的一部分 此.net函数接受字符串值作为参数并构建uri。我对参数值进行url编码,因为它有特殊字符,在本例中是/(正斜杠) 当我在.net控制台应用程序中引用此函数时,url编码按预期工作。但是,当我在SSIS脚本任
public void GetLCDClientOffice(string officename)
{
using (var client = BuildClient())
{
var url = String.Format("{0}/{1}/{2}"
, this.ResourceName
, this.OFFICE_PATH
, Uri.EscapeDataString(officename));
var uri = new Uri(ServiceUri, url);
string url1 = ServiceUri.ToString() +
String.Format("{0}/{1}/{2}",this.ResourceName
, OFFICE_PATH, System.Web.HttpUtility.UrlEncode(officename));
// Get Async unescapes %2F back to / when called from from SSIS script task but works from .net console project
var response = await client.GetAsync(uri);
var response = await client.GetAsync(url1); // same behavior
// do something with response
}
}
public HttpClient BuildClient()
{
var client = new HttpClient();
client.Timeout = new TimeSpan(0, 30, 0);
return client;
}
您是否对其进行了代码步进,以便确定是GetAsync()方法消除了它?如果出现问题,您是在SSDT中运行SSIS包还是在服务器上运行SSIS包?.NET Framework 4.5不推荐使用--请参见.NET Blog>支持结束.NET Framework 4,4.5和4.5.1:HttpClient由nuget发布--Microsoft.NET Framework 4 HTTP客户端库:。我认为有足够的空间让不同的版本链接进来。感谢Richard的回复。回答你的问题:是的,我使用fiddler编写了代码并捕获了流量。GetAsync()方法将%2F替换为我们的prod服务器中的错误,然后我们开始在SSDT中进行调试,其行为与此相同。是的,HttpClient来自Nuget。您是否对其进行了代码步进,以便可以确定它是GetAsync()方法避免了它?当它出错时,您是在SSDT中运行SSIS包还是在服务器上运行SSIS包?.NET Framework 4.5不推荐使用--请参阅.NET博客>支持结束.NET Framework 4,4.5和4.5.1:HttpClient由nuget发布--Microsoft.NET Framework 4 HTTP客户端库:。我认为有足够的空间让不同的版本链接进来。感谢Richard的回复。回答你的问题:是的,我使用fiddler编写了代码并捕获了流量。GetAsync()方法将%2F替换为我们的prod服务器中的错误,然后我们开始在SSDT中进行调试,其行为与此相同。是的,HttpClient来自Nuget。