Asp.net mvc 4 条带支付托管问题
在ASP.MVC 4.0应用程序(发布于1和1共享主机)上使用条带支付(测试模式)时,我遇到以下错误: 请求“System.Security.Permissions.SecurityPermission,mscorlib,Version=4.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。 有没有人遇到过类似的错误? 我已经读到共享主机可能有一些事情要做,因为它使用“中等信任”配置,但很难接受stripe不能用于共享主机帐户(我相信大多数网站在共享主机中运行)Asp.net mvc 4 条带支付托管问题,asp.net-mvc-4,shared-hosting,stripe.net,Asp.net Mvc 4,Shared Hosting,Stripe.net,在ASP.MVC 4.0应用程序(发布于1和1共享主机)上使用条带支付(测试模式)时,我遇到以下错误: 请求“System.Security.Permissions.SecurityPermission,mscorlib,Version=4.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。 有没有人遇到过类似的错误? 我已经读到共享主机可能有一些事情要做,因为它使用“中等信任”配置,但很难接受stripe不能用于共享主机帐户
非常感谢 我也有同样的问题。为确保您的服务器在heartbleed问题发生后没有重定向而执行的检查似乎存在问题。我正在与stripe.net nuget库的作者合作修复它。如果您想自己修复它,请转到Infrastructure\Requestor.cs文件并编辑以下部分(我注释掉了问题区域)。完成此操作后,您可以以中等信任度运行stripe.net
private static string ExecuteWebRequest(WebRequest webRequest)
{
//var verificationCallback = new RemoteCertificateValidationCallback(StripeCertificateVerificationCallback);
try
{
//ServicePointManager.ServerCertificateValidationCallback += verificationCallback;
using (var response = webRequest.GetResponse())
{
return ReadStream(response.GetResponseStream());
}
}
catch (WebException webException)
{
if (webException.Response != null)
{
var statusCode = ((HttpWebResponse)webException.Response).StatusCode;
var stripeError = new StripeError();
if(webRequest.RequestUri.ToString().Contains("oauth"))
stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream()));
else
stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream()), "error");
throw new StripeException(statusCode, stripeError, stripeError.Message);
}
throw;
}
finally
{
//ServicePointManager.ServerCertificateValidationCallback -= verificationCallback;
}
}
私有静态字符串ExecuteWebRequest(WebRequest WebRequest)
{
//var verificationCallback=新的RemoteCertificateValidationCallback(StripeCertificateValidationCallback);
尝试
{
//ServicePointManager.ServerCertificateValidationCallback+=验证回调;
使用(var response=webRequest.GetResponse())
{
返回ReadStream(response.GetResponseStream());
}
}
捕获(WebException WebException)
{
if(webException.Response!=null)
{
var statusCode=((HttpWebResponse)webException.Response);
var stripeError=新的stripeError();
if(webRequest.RequestUri.ToString()包含(“oauth”))
stripeError=Mapper.MapFromJson(ReadStream(webException.Response.GetResponseStream());
其他的
stripeError=Mapper.MapFromJson(ReadStream(webException.Response.GetResponseStream()),“error”);
抛出新的StripeException(状态码、stripeError、stripeError.Message);
}
投掷;
}
最后
{
//ServicePointManager.ServerCertificateValidationCallback-=验证回调;
}
}
所以,在ssl配置的站点上发布将允许我取消注释这些行,不是吗?不,我已经尝试过了,但也失败了。如果您使用的.net版本为4.0或更低,则此代码每次都会失败。如果您使用的是4.5+,您实际上可以像上面那样保留所有注释并更改代码(在相同的.cs代码页上)。