ReportViewer 自定义协议
ReportViewer Custom Protocol
我在我的 WPF 应用程序中使用 ReportViewer,我正在尝试获取一个自定义协议来处理该应用程序。因此,当在 ReportViewer 中单击 url 时,我能够在我的应用程序中打开子程序。
当我单击自定义协议-url(在 ReportViewer 内)时,没有任何反应。
当我通过 Web 浏览器打开同一份报告时,我的 URL 运行完美。
ReportViewer 似乎不允许自定义协议?有没有人也经历过?有这方面的文档吗?
http、https 和 mailto 正在 ReportViewer 中工作。
我只是在报告中添加一个指向我的 url 的操作
customurl://123
Url定义:
[HKEY_CLASSES_ROOT\customurl]
@="URL: customurl Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\customurl\shell]
[HKEY_CLASSES_ROOT\customurl\shell\open]
[HKEY_CLASSES_ROOT\customurl\shell\open\command]
@="\"C:\Extra Programme\TestAlert.exe\" \"%1\""
Testalert(只是微软的测试程序):
static string ProcessInput(string s)
{
// TODO Verify and validate the input
// string as appropriate for your application.
return s;
}
static void Main(string[] args)
{
Console.WriteLine("Alert.exe invoked with the following parameters.\r\n");
Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine);
Console.WriteLine("\n\nArguments:\n");
foreach (string s in args)
{
Console.WriteLine("\t" + ProcessInput(s));
}
Console.WriteLine("\nPress any key to continue...");
Console.ReadKey();
}
我查看了 ReportViewer 的代码并找到了一个 if 语句,它检查 url 是否以 http://
或 https://
或 mailto:
开头。
它通过 Uri.UriSchemeHttp
、Uri.UriSchemeHttps
和 Uri.UriSchemeMailto
获取此信息
所以你可以覆盖例如。 Uri.UriSchemeHttp
和 "customurl"
(如果您的 url 是 customurl://123
),然后再呈现报告。
var field = typeof(Uri).GetField("UriSchemeHttp");
field.SetValue(null, "customurl");
更优雅的解决方案是使用网络浏览器控件并只显示 SSRS 网页
我在我的 WPF 应用程序中使用 ReportViewer,我正在尝试获取一个自定义协议来处理该应用程序。因此,当在 ReportViewer 中单击 url 时,我能够在我的应用程序中打开子程序。
当我单击自定义协议-url(在 ReportViewer 内)时,没有任何反应。 当我通过 Web 浏览器打开同一份报告时,我的 URL 运行完美。
ReportViewer 似乎不允许自定义协议?有没有人也经历过?有这方面的文档吗?
http、https 和 mailto 正在 ReportViewer 中工作。
我只是在报告中添加一个指向我的 url 的操作
customurl://123
Url定义:
[HKEY_CLASSES_ROOT\customurl]
@="URL: customurl Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\customurl\shell]
[HKEY_CLASSES_ROOT\customurl\shell\open]
[HKEY_CLASSES_ROOT\customurl\shell\open\command]
@="\"C:\Extra Programme\TestAlert.exe\" \"%1\""
Testalert(只是微软的测试程序):
static string ProcessInput(string s)
{
// TODO Verify and validate the input
// string as appropriate for your application.
return s;
}
static void Main(string[] args)
{
Console.WriteLine("Alert.exe invoked with the following parameters.\r\n");
Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine);
Console.WriteLine("\n\nArguments:\n");
foreach (string s in args)
{
Console.WriteLine("\t" + ProcessInput(s));
}
Console.WriteLine("\nPress any key to continue...");
Console.ReadKey();
}
我查看了 ReportViewer 的代码并找到了一个 if 语句,它检查 url 是否以 http://
或 https://
或 mailto:
开头。
它通过 Uri.UriSchemeHttp
、Uri.UriSchemeHttps
和 Uri.UriSchemeMailto
所以你可以覆盖例如。 Uri.UriSchemeHttp
和 "customurl"
(如果您的 url 是 customurl://123
),然后再呈现报告。
var field = typeof(Uri).GetField("UriSchemeHttp");
field.SetValue(null, "customurl");
更优雅的解决方案是使用网络浏览器控件并只显示 SSRS 网页