GVKun编程网logo

asp.net-mvc – SQL Azure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets = True’

13

本篇文章给大家谈谈asp.net-mvc–SQLAzure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets=True’,

本篇文章给大家谈谈asp.net-mvc – SQL Azure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets = True’,同时本文还将给你拓展158. Read N Characters Given Read4 II - Call multiple times、Android startActivityForResult,setResult,onActivityResult未调用、ASP.net MVC中的Azure Redis StackExchange.Redis ConnectionMultiplexer、asp.net-core – Stream的意外结束,内容可能已被另一个组件读取. Microsoft.AspNetCore.WebUtilities.MultipartReaderStream等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

asp.net-mvc – SQL Azure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets = True’

asp.net-mvc – SQL Azure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets = True’

我们在云应用程序的部署版本上面临一些问题。

我们的应用程序是一个带有ADO .NET实体框架的ASP.NET MVC 3项目。

根据msdn博客,我们需要在我们正确完成的数据库连接字符串中添加参数“MultipleActiveResultSets = True”(用于sql azure的实体框架)。

从我们的应用程序执行数据库查询时,我们得到以下异常:“已经有一个与此Command关联的开放DataReader必须首先关闭。”
我认为这与’MultipleActiveResultSets = True’属性非常相关。

该应用程序在本地环境中与本地部署的数据库以及使用sql azure数据库(在本地环境中)工作正常。

但是当我们部署我们的云应用程序时,会得到上面提到的错误。似乎没有从连接字符串读取’MultipleActiveResultSets = True’属性。

我使用的连接字符串如下所示:

<connectionStrings>
        <add name="#DBInstanceName#" connectionString="Data Source=tcp:#server#.database.windows.net,1433;Initial Catalog=#dbname#;User ID=”UserName#@#server#;Password=”#password#”;MultipleActiveResultSets=True" providerName="System.Data.sqlClient"/>
    </connectionStrings>

我可以使用本地部署的应用程序的上述连接字符串连接到sql Azure数据库,没有任何例外。但是使用相同的连接字符串在云上部署相同的应用程序会给我上面提到的错误。

你能帮我们修好吗?

解决方法

我刚刚遇到同样的问题。我已经尝试在Web.config连接中设置“MultipleActiveResultSets = True” – 没有结果。 最后,我通过在Azure Dashboard手动编辑Connection字符串来解决问题,在“配置”选项卡中有“连接字符串”设置,您应该手动添加“MultipleActiveResultSets = True;”串。 在做完之后,我已经完成了MARS的工作。

158. Read N Characters Given Read4 II - Call multiple times

158. Read N Characters Given Read4 II - Call multiple times

158. Read N Characters Given Read4 II - Call multiple times

题目链接:https://leetcode.com/problems...

和那道read n不同的是这次call multiple times,问题就是当前的call可能存在多读了几个字节,那么下一次call read的时候要先算上上次多读的部分,所以要保存上次读的。和读一次一样有两种要考虑的case:

  1. file读完了: read4(buf[]) == 0

  2. file没读完,但是buf装满了read4(buf[]) > n - res

public class Solution extends Reader4 {
    /**
     * @param buf Destination buffer
     * @param n   Maximum number of characters to read
     * @return    The number of characters read
     */
    char[] buff = new char[4];
    int start = 0;
    int num = 0;
    public int read(char[] buf, int n) {
        int res = 0;
        while(res < n) {
            // no previous buff remain
            if(start == 0) num = read4(buff);
            // finish reading
            if(num == 0) break;
            // count the remain char to use for next call: start is the next start
            while(res < n && start < num) buf[res++] = buff[start++];
            // clear start if read all: n - res >= num - start
            if(start == num) start = 0;
        }
        return res;
    }
}

157. Read N Characters Given Read4

    public int read(char[] buf, int n) {
        int res = 0;
        char[] temp = new char[4];
        while(res < n) {
            int cur = read4(temp);
            if(cur == 0) break;
            
            int num = Math.min(cur, n - res);
            for(int j = 0; j < num; j++) buf[res++] = temp[j];
        }
        return res;
    }

Android startActivityForResult,setResult,onActivityResult未调用

Android startActivityForResult,setResult,onActivityResult未调用

我打了一个电话,要求提供结果:

    Intent intentcall = new Intent();
intentcall.setAction(Intent.ACTION_CALL);
intentcall.setData(Uri.parse("tel:" + phoneNumber));
this.startActivityForResult(intentcall, REQUEST_SLIPDROP_ICON_OFF);

然后像这样在电话监听器中设置结果:

    private class MyPhonestateListener extends PhonestateListener{
     public void onCallStateChanged(int state, String incomingNumber) {

         super.onCallStateChanged(state, incomingNumber);

         switch (state) {
             case TelephonyManager.CALL_STATE_IDLE:
                                   setResult(Activity.RESULT_OK);
                                   break;

最后,我想关闭onActivityResult中的图标,但是什么也没有发生.

    switch (requestCode) {

    case REQUEST_SLIPDROP_ICON_OFF:
        Log.d("request icon off", "request icon off");

        if (resultCode == Activity.RESULT_OK) {     

            changeMenuItem(R.id.fall, R.drawable.fall);
            slipAndDropIconOn = false;

        } 

        break;

哪里不对了?请指教!谢谢

解决方法:

我认为此操作不会返回结果,因此调用startActivityForResult与调用startActivity没什么不同

注意:输出=无.
http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL

ASP.net MVC中的Azure Redis StackExchange.Redis ConnectionMultiplexer

ASP.net MVC中的Azure Redis StackExchange.Redis ConnectionMultiplexer

我已经读过,为了连接到Azure Redis缓存,最好遵循以下做法:

private static ConnectionMultiplexer Connection { get { return LazyConnection.Value; } }

    private static readonly Lazy<ConnectionMultiplexer> LazyConnection =
        new Lazy<ConnectionMultiplexer>(
            () =>
            {
                return
                    ConnectionMultiplexer.Connect(connStinrg);
            });

根据Azure Redis文档:

与Azure
Redis缓存的连接由ConnectionMultiplexer类管理。此类设计为在整个客户端应用程序中共享和重用,并且不需要在每个操作的基础上创建。

那么,在我的ASP.net
MVC应用程序之间共享ConnectionMultiplexer的最佳实践是什么?应该在Global.asax中调用它,还是每个Controller或smth将其初始化一次。还有吗?

另外,我还具有用于与应用程序通信的服务,因此,如果要在服务内部与Redis进行通信,应该将ConnectionMultiplexer的实例发送至Controllers的服务,还是应该在所有服务中对其进行初始化,或者?

如您所见,我在这里有些迷路,请帮助!

asp.net-core – Stream的意外结束,内容可能已被另一个组件读取. Microsoft.AspNetCore.WebUtilities.MultipartReaderStream

asp.net-core – Stream的意外结束,内容可能已被另一个组件读取. Microsoft.AspNetCore.WebUtilities.MultipartReaderStream

当我尝试从请求中读取多部分内容时,我得到一个异常,说明内容可能已被其他组件读取.

if (MultipartRequestHelper.IsMultipartContentType(Request.ContentType))
            {
                // Used to accumulate all the form url encoded key value pairs in the 
                // request.
                var formAccumulator = new keyvalueAccumulator();

                var boundary = Request.GetMultipartBoundary();
                var reader = new MultipartReader(boundary,HttpContext.Request.Body);
                var section = await reader.ReadNextSectionAsync();
                while (section != null)
                {
                    ContentdispositionHeaderValue contentdisposition;
                    var hasContentdispositionHeader =
                        ContentdispositionHeaderValue.TryParse(section.Contentdisposition,out contentdisposition);
                }
            }

解决方法

事实证明,我必须使用下面的属性禁用表单值模型绑定.

[HttpPost]
    [Route("")]
    [disableFormValueModelBinding]
    public async Task<IActionResult> Post()

属性实现如下

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class disableFormValueModelBindingAttribute : Attribute,IResourceFilter
{
    public void OnResourceExecuting(ResourceExecutingContext context)
    {
        var factories = context.ValueProviderFactories;
        factories.RemoveType<FormValueProviderFactory>();
        factories.RemoveType<JQueryFormValueProviderFactory>();
    }

    public void OnResourceExecuted(ResourceExecutedContext context)
    {
    }
}

关于asp.net-mvc – SQL Azure得到一个错误’已经有一个打开的DataReader与此命令..’关联,即使设置’MultipleActiveResultSets = True’的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于158. Read N Characters Given Read4 II - Call multiple times、Android startActivityForResult,setResult,onActivityResult未调用、ASP.net MVC中的Azure Redis StackExchange.Redis ConnectionMultiplexer、asp.net-core – Stream的意外结束,内容可能已被另一个组件读取. Microsoft.AspNetCore.WebUtilities.MultipartReaderStream的相关知识,请在本站寻找。

本文标签: