Asp.net CAPI2未找到代理自动配置URL
我有一个asp.NETMVC应用程序。在windows server 2008 R2和framework 4.5上运行。 在一个控制器上。我使用httpclient通过https通道向远程soap服务器发送xml。但是很慢。完成请求需要6秒钟。我启用CAPI2日志。发现错误: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
> 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小时),我知道它也太长了,但这取决于您的需要或安全问题,在我的情况下是足够安全的
我希望它能帮助你