C++ 正在使用URL中的重复路径调用异步可插拔协议处理程序Start()

C++ 正在使用URL中的重复路径调用异步可插拔协议处理程序Start(),c++,angularjs,winapi,protocols,pluggableprotocol,C++,Angularjs,Winapi,Protocols,Pluggableprotocol,我为一个应用程序提供了一个异步可插拔协议处理程序,该应用程序主要模仿file://协议,但将请求限制在应用程序中配置的沙箱中 应用程序使用C#中的WebBrowser控件托管AngularJS webapp。当Angular的路由器使用协议请求一个视图模板文件时,我会收到一个对IInternetProtocolInfo::CombineUrl()实现的请求,其中包含以下baseUrl和relativeUrl: pwzBaseUrl: myProtocol:///webApp/app/index.

我为一个应用程序提供了一个异步可插拔协议处理程序,该应用程序主要模仿file://协议,但将请求限制在应用程序中配置的沙箱中

应用程序使用C#中的WebBrowser控件托管AngularJS webapp。当Angular的路由器使用协议请求一个视图模板文件时,我会收到一个对IInternetProtocolInfo::CombineUrl()实现的请求,其中包含以下baseUrl和relativeUrl:

pwzBaseUrl: myProtocol:///webApp/app/index.html#/start
pwzRelativeUrl: views/start.html
我的代码是:

wchar_t buf[2048] = { 0 };
DWORD ret = 2048;

UrlCombine(pwzBaseUrl, pwzRelativeUrl, buf, &ret, 0);

// pwzResult is myProtocol:///webApp/app/views/start.html here
StringCchCopy(pwzResult, ret + 1, buf);

*pcchResult = ret + 1;
return S_OK;
这将导致使用以下url调用IIInternetProtocol::Start():

szUrl: myProtocol:///webApp/app/views/start.html/webApp/app/views/start.html
正如我们所看到的,文件的路径被复制了,我不知道为什么。似乎只有AngularJS的视图模板文件会遇到这个问题;其他相对路径工作完全正常(例如从bower_组件/节点_模块中拉入其他脚本文件)

如果路径是重复的,我希望避免不得不对此进行黑客攻击以将路径一分为二。urlmon用这个奇怪的url调用我的协议肯定有原因