我有一个针对.NET 4.5的ASP.NET Web应用程序.在本地,项目构建,但在构建服务器(TeamCity)上它失败:
... cs(77,38):错误CS0012:类型'System.Enum'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
这可能是什么原因(和补救措施)?
我正在尝试解密从基于Java的身份提供程序发出的加密SAML 2.0断言.
鉴于以下安全令牌处理程序的设置:
X509Certificate2 cert = ... // Contains private key
var serviceTokens = new List<SecurityToken>();
serviceTokens.Add(new X509SecurityToken(cert));
var issuers = new ConfigurationBasedIssuerNameRegistry();
issuers.AddTrustedIssuer("...thumbprint...", "nottherealname");
var configuration = new SecurityTokenHandlerConfiguration
{
AudienceRestriction = { AudienceMode = AudienceUriMode.Never },
CertificateValidationMode = X509CertificateValidationMode.None,
RevocationMode = X509RevocationMode.NoCheck,
IssuerNameRegistry = issuers,
MaxClockSkew = TimeSpan.FromMinutes(5),
ServiceTokenResolver = SecurityTokenResolver.CreateDefaultSecurityTokenResolver(serviceTokens.AsReadOnly(), false)
};
var tokenHandlers = SecurityTokenHandlerCollection.CreateDefaultSecurityTokenHandlerCollection(configuration);
Run Code Online (Sandbox Code Playgroud)
我得到一个加密的SAML断言,例如:
<saml:EncryptedAssertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<xenc:EncryptedKey>
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<xenc:CipherData>
<xenc:CipherValue>Fwhv/zEVi3eQvQN372L1S+pVDM5JKs1Kc2I25djuiOPdwKReCXRhnd5QL4Y8wJDWZ5vAlOxHkNAZ
OwOg4NsSI8KssrygNk4fwvNdVAGMB5ytI1QTGRqG6WwP4Em+uLN3VXbqiLWA9D6uO0BwATF9HdTb
j/IMhGCxZ1ZKrKQF5OL2PHKf4DqyNa5d9CNZenhYyYghgYrhgZtQVl/VARAp9VKsM/lbkPsEU8Ty
ow4LnTlYqBnykrOEJowN5B+HXGvfhbIBHyGzdCC+WbcEbI898zy/VhZ63VyFL2GSTdDWv10IEMy5
CHom4Qruer1xpyQMrxJ6EK30HMhVppToivgoFQ==</xenc:CipherValue> …Run Code Online (Sandbox Code Playgroud) 我们在Win 2012 R2上的IIS 8.5上运行一个Owin应用程序,位于负载均衡器后面.一些网页,对某些网址的请求无限期挂起.如果用户在浏览器中选择取消,并重新加载页面,则一切正常,服务器响应迅速.
在IIS管理器中,我们可以看到请求挂起:
悬挂似乎发生在Owin管道内.我们运行的是.NET 4.5.2和最新的Owin软件包.
这是/api/whoami端点的代码:
[Authorize]
public class WhoAmIController : ApiController
{
[Route("whoami")]
[HttpGet]
public IHttpActionResult Whoami()
{
return Json(ClaimsPrincipal.Current.Identity.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
观察到对此端点的请求AuthenticateRequest在IIS管道的阶段中挂起,而不是PreExecuteRequestHandlerOWIN管道的默认IIS阶段.我们唯一的身份验证方法是cookie身份验证,它在AuthenticateRequest阶段执行.
有任何想法吗?
编辑:调整截图
failed to open file file://D/:/dev/test_all.html JavaException: java.net.UnknownHostException: D
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况的想法?