Asp.net mvc 4 条带支付托管问题

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不能用于共享主机帐户

在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代码页上)。