Asp.net CAPI2未找到代理自动配置URL

Asp.net CAPI2未找到代理自动配置URL,asp.net,httpclient,Asp.net,Httpclient,我有一个asp.NETMVC应用程序。在windows server 2008 R2和framework 4.5上运行。 在一个控制器上。我使用httpclient通过https通道向远程soap服务器发送xml。但是很慢。完成请求需要6秒钟。我启用CAPI2日志。发现错误: > System > > - Provider > > [ Name] Microsoft-Windows-CAPI2 > [ Guid] {5bbca4a8-b20

我有一个asp.NETMVC应用程序。在windows server 2008 R2和framework 4.5上运行。 在一个控制器上。我使用httpclient通过https通道向远程soap服务器发送xml。但是很慢。完成请求需要6秒钟。我启用CAPI2日志。发现错误:

> System 
>
>  - Provider 
>
>   [ Name]  Microsoft-Windows-CAPI2 
>   [ Guid]  {5bbca4a8-b209-48dc-a8c7-b23d3e5216fb} 
> 
>   EventID 53 
> 
>   Version 0 
> 
>   Level 2 
> 
>  Task 53 
> 
>   Opcode 2 
> 
>   Keywords 0x4000000000000036 
> 
>  - TimeCreated 
>
>   [ SystemTime]  2013-03-06T00:09:12.342400000Z 
> 
>   EventRecordID 226 
> 
>   Correlation 
> 
>  - Execution 
>
>   [ ProcessID]  4716 
>   [ ThreadID]  3620 
> 
>   Channel Microsoft-Windows-CAPI2/Operational 
> 
>   Computer WIN-PFVACQLB4A9 
> 
>  - Security 
>
>   [ UserID]  S-1-5-82-100694679-852442941-408577778-1461352480-452402374 
> 
>
>- UserData 
>
>  - CryptRetrieveObjectByUrlWire 
>
>  - URL http://gtssldv-aia.geotrust.com/gtssldv.crt 
>
>   [ scheme]  http 
> 
>  - Object 
>
>   [ type]  CONTEXT_OID_CERTIFICATE 
>   [ constant]  1 
> 
>   Timeout PT15S 
> 
>  - Flags 
>
>   [ value]  286005 
>   [ CRYPT_RETRIEVE_MULTIPLE_OBJECTS]  true 
>   [ CRYPT_WIRE_ONLY_RETRIEVAL]  true 
>   [ CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL]  true 
>   [ CRYPT_OFFLINE_CHECK_RETRIEVAL]  true 
>   [ CRYPT_AIA_RETRIEVAL]  true 
>   [ CRYPT_PROXY_CACHE_RETRIEVAL]  true 
> 
>  - AuxInfo 
>
>   [ maxUrlRetrievalByteCount]  100000 
>   [ fProxyCacheRetrieval]  true 
> 
>  - AdditionalInfo 
>
>  - NetworkConnectivityStatus 
>
>   [ value]  1 
>   [ _SENSAPI_NETWORK_ALIVE_LAN]  true 
> 
>  - Action 
>
>   [ name]  Call_WinHttpGetProxyForUrl 
>  - Error The Proxy Auto-configuration URL was not found. 
>
>   [ value]  2F94 
> 
> 
>  - Action 
>
>   [ name]  NoProxy 
> 
>  - Action 
>
>   [ name]  Call_WinHttpGetProxyForUrl 
>  + Error The Proxy Auto-configuration URL was not found. 
>
>   [ value]  2F94 
> 
> 
>  - Action 
>
>   [ name]  NoProxy 
> 
>  - HTTPRequestHeadersInfo 
>
>   Header GET /gtssldv.crt HTTP/1.1 
> 
>   Header Accept: */* 
> 
>   Header User-Agent: Microsoft-CryptoAPI/6.1 
> 
>   Header Connection: Keep-Alive 
> 
> 
>  - HTTPResponseHeadersInfo 
>
>   Header HTTP/1.0 200 OK 
> 
>   Header Connection: Keep-Alive 
> 
>   Header Date: Tue, 05 Mar 2013 23:43:39 GMT 
> 
>   Header Via: NS-248 
> 
>   Header Via: 1.0 hostname:80 (squid/2.6.STABLE21) 
> 
>  Header Content-Length: 1022 
> 
>   Header Content-Type: text/plain 
> 
>   Header Last-Modified: Wed, 21 Jul 2010 18:25:03 GMT 
> 
>   Header Accept-Ranges: bytes 
> 
>   Header Age: 540 
> 
>   Header ETag: "25f7fb-3fe-48be9eb969dc0" 
> 
>   Header Server: Apache/2.2.3 (Red Hat) 
> 
>   Header X-Pad: avoid browser bug 
> 
>   Header X-Cache: MISS from hostname 
> 
>   Header X-Cache-Lookup: HIT from hostname:80 
> 
> 
>  - Action 
>
>   [ name]  WriteToCache 
>  - Error The system cannot find the file specified. 
>
>   [ value]  80070002 
> 
> 
> 
>  - CacheInfo 
>
>   [ lastSyncTime]  2013-03-06T00:09:12.342Z 
>  - URLCacheResponseInfo 
>
>  [ responseType]  CRYPTNET_URL_CACHE_RESPONSE_HTTP 
>   [ lastModifiedTime]  2010-07-21T18:25:03Z 
>   [ eTag]  "25f7fb-3fe-48be9eb969dc0" 
>   [ proxyId]  DEAE4085 
> 
> 
>  - RetrievedObjects 
>
>  - Certificate 
>
>   [ fileRef]  BAE30B15DBB1544CF194D076B75B7BB9E3D6B760.cer 
>   [ subjectName]  GeoTrust DV SSL CA 
> 
> 
>  - EventAuxInfo 
>
>   [ ProcessName]  w3wp.exe 
> 
>  - CorrelationAuxInfo 
>
>   [ TaskId]  {2B4FC750-01D1-4D7E-BEEF-A3F9DD09B0E8} 
>   [ SeqNumber]  4 
> 
>  - Result 
>
>   [ value]  0 
我还未选中Internet Explorer->Internet Opitions->Connections->LAN设置->自动检测设置。没有什么变化

正在寻求帮助


谢谢

我的答案如下:

设置一个IIS服务器,使其能够在内部用javascript响应-不要忘记为wpad.dat添加MIME类型(application/x-javascript很好)。如果不需要代理,那么wpad.dat文件中的javascript应该如下所示:

function FindProxyForURL(url, host)
{
    return "DIRECT";
}

之后,在使用certutil时,CAPI2日志中不应再包含事件53

可能已经太晚了,但我解决同样问题的方法是找到用户ID,在您的例子中:

[ UserID]  S-1-5-82-100694679-852442941-408577778-1461352480-452402374
在注册表内,位于以下位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList .
它将告诉您哪个用户正在调用Crypto API 2(CAPI2),在我的例子中是“Classic.NET应用程序池”或类似的

我通过模拟(以具有足够权限的另一个用户的身份运行进程)修复了它,然后我不再有此写入错误,因此事件日志中不再有红色错误消息

为此,我在本地计算机上创建了一个具有管理员权限的用户(我知道这不是最安全的选项,但我不得不尝试,并且成功了)。最后,问题似乎出在代理上,但具体的错误是:

>   [ name]  WriteToCache 
>  - Error The system cannot find the file specified. 
>
>   [ value]  80070002 
> 
它在某个地方没有写权限,但管理员有:p

我在本地组策略编辑器中还做了另一件事(因为crypto API总是请求CRL),路径如下:

计算机配置>Windows设置>安全设置>公钥>证书路径验证设置>“吊销”选项卡。启用“定义这些策略设置”并启用“允许CRL和OCSP响应的有效期长于其生存期”

然后我将CRL的有效期延长到一年(8760小时),我知道它也太长了,但这取决于您的需要或安全问题,在我的情况下是足够安全的

我希望它能帮助你