关于app_gloabal.dll未能加载的解决方案

本文解决了一个常见的ASP.NET运行时权限问题,即无法写入临时文件夹。通过删除特定目录下的文件并调整磁盘配额,可以有效避免此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/szuwangjl/archive/2009/07/31/4398362.aspx

 

当前标识没有对C:/WINDOWS/Microsoft.net/Framework/v2.0.50727/Temporary ASP.net Files”的写访问权限问题真正的解决办法

powered by 25175.net

这个问题出现过两次,按照网上有些文章说的重新安装.net FrameWork 2.0 并没有作用,他们解释的理由是IIS和framework2.0的安装顺序有问题,所以要重新安装一次,我被这个问题困扰了很久,直到昨天,终于找到了问题所在。

我发现只要删除C:/WINDOWS/Microsoft.net/Framework/v2.0.50727/Temporary ASP.net Files 里面的文件就可以了,删除以后一切恢复正常,也就是说.net在运行的过程中会不断的往这个临时文件夹写入一些数据,因为某种原因,这些数据写不进去了,所以提示没有写入权限,这种情况发生的几率其实很小,经常会出现在服务器在有很多用户访问的时候重启了服务器,这时有可能会出现这种错误。

但是我发现清空了里面的问题,暂时是好了,但是只要时间一长又会重新出现这个错误,百思不得其解,查看系统的应用程序日志,找到了原因。在出现这个错误之前,系统有一条错误日志,说的是磁盘空间不足,奇怪,我的服务器每个盘都还有好几十个G的空间,怎么会报磁盘空间不足,突然想起来原来是我在服务器上做了磁盘配额,每个用户只分配了10G可用空间,检查networkService用户,它的磁盘空间已经用户,所以才报没有写入权限的错误。扩大其磁盘配额,一切恢复正常。

如果大家出现这个问题,建议大家检查一下磁盘空间是否真的不足,是否加了磁盘配额,另外查看一下 C:/windows/temp文件夹,因为.net 运行时需要network Service用户访问这个文件夹,看看这个文件夹内的文件是否太大,定时清空一下。一切OK!

 

最终解决方案:删除C:/WINDOWS/Microsoft.net/Framework/v2.0.50727/Temporary ASP.net Files 下对应的目录下的文件即可,并重启应用程序。

#include "stm32f10x.h" #include <stdio.h> #include "ad7606.h" FIFO_T g_tAD; /* 定义一个交换缓冲区,用于存储AD采集数据,并用于写入SD卡 */ void bsp_TIM4_Configuration(void); /* ********************************************************************************************************* * 函 数 名: bsp_InitAD7606 * 功能说明: 初始化AD7606 SPI口线 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void bsp_InitAD7606(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; /* AD_SPI_CS_GPIO, AD_SPI_MOSI_GPIO, AD_SPI_MISO_GPIO, AD_SPI_DETECT_GPIO and AD_SPI_SCK_GPIO Periph clock enable */ RCC_APB2PeriphClockCmd(AD_CS_GPIO_CLK | AD_SPI_MISO_GPIO_CLK | AD_SPI_SCK_GPIO_CLK , ENABLE); GPIO_InitStructure.GPIO_Pin = AD_SPI_SCK_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(AD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = AD_CS_PIN; GPIO_Init(AD_CS_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = AD_SPI_MISO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(AD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure); /* 配置其它的GPIO */ /* 使能GPIO时钟 */ RCC_APB2PeriphClockCmd(AD_RESET_GPIO_CLK | AD_CONVST_GPIO_CLK | AD_RANGE_GPIO_CLK | AD_OS0_GPIO_CLK | AD_OS1_GPIO_CLK | AD_OS2_GPIO_CLK, ENABLE); /* 配置RESET GPIO */ GPIO_InitStructure.GPIO_Pin = AD_RESET_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(AD_RESET_GPIO_PORT, &GPIO_InitStructure); /* 配置CONVST GPIO */ GPIO_InitStructure.GPIO_Pin = AD_CONVST_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(AD_CONVST_GPIO_PORT, &GPIO_InitStructure); /* 配置RANGE GPIO */ GPIO_InitStructure.GPIO_Pin = AD_RANGE_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(AD_RANGE_GPIO_PORT, &GPIO_InitStructure); /* 配置OS0-2 GPIO */ GPIO_InitStructure.GPIO_Pin = AD_OS0_PIN; GPIO_Init(AD_OS0_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = AD_OS1_PIN; GPIO_Init(AD_OS1_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = AD_OS2_PIN; GPIO_Init(AD_OS2_GPIO_PORT, &GPIO_InitStructure); /* 设置过采样模式 */ ad7606_SetOS(0); /* 设置GPIO的初始状态 */ ad7606_Reset(); /* 硬件复位复AD7606 */ AD_CONVST_HIGH(); /* CONVST脚设置为高电平 */ bsp_TIM4_Configuration(); /* 配置TIM2定时中断 */ } /* ********************************************************************************************************* * 函 数 名: ad7606_Reset * 功能说明: 硬件复位AD7606 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_Reset(void) { /* AD7606是高电平复位,要求最小脉宽50ns */ AD_RESET_LOW(); AD_RESET_HIGH(); AD_RESET_HIGH(); AD_RESET_HIGH(); AD_RESET_HIGH(); AD_RESET_LOW(); } /* ********************************************************************************************************* * 函 数 名: ad7606_SetOS * 功能说明: 设置过采样模式(数字滤波,硬件求平均值) * 形 参:_ucMode : 0-6 0表示无过采样,1表示2倍,2表示4倍,3表示8倍,4表示16倍 * 5表示32倍,6表示64倍 * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_SetOS(uint8_t _ucMode) { if (_ucMode == 1) { AD_OS2_0(); AD_OS1_0(); AD_OS0_1(); } else if (_ucMode == 2) { AD_OS2_0(); AD_OS1_1(); AD_OS0_0(); } else if (_ucMode == 3) { AD_OS2_0(); AD_OS1_1(); AD_OS0_1(); } else if (_ucMode == 4) { AD_OS2_1(); AD_OS1_0(); AD_OS0_0(); } else if (_ucMode == 5) { AD_OS2_1(); AD_OS1_0(); AD_OS0_1(); } else if (_ucMode == 6) { AD_OS2_1(); AD_OS1_1(); AD_OS0_0(); } else /* 按0处理 */ { AD_OS2_0(); AD_OS1_0(); AD_OS0_0(); } } /* ********************************************************************************************************* * 函 数 名: ad7606_StartConv * 功能说明: 启动AD7606的ADC转换 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_StartConv(void) { /* 上升沿开始转换,低电平持续时间至少25ns */ AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_LOW(); /* 连续执行2次,低电平约50ns */ AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_LOW(); AD_CONVST_HIGH(); } /* ********************************************************************************************************* * 函 数 名: bsp_TIM4_Configuration * 功能说明: 配置TIM4定时器 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void bsp_TIM4_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* TIM2 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); /* Configure the NVIC Preemption Priority Bits[配置优先级组] */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /* Enable the TIM2 gloabal Interrupt [允许TIM2全局中断]*/ NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } /* ********************************************************************************************************* * 函 数 名: bsp_SET_TIM4_FREQ * 功能说明: 设置TIM4定时器频率 * 形 参:_ulFreq : 采样频率,单位Hz, * 返 回 值: 无 ********************************************************************************************************* */ void bsp_SET_TIM4_FREQ(uint32_t _ulFreq) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; uint16_t usPrescaler; uint16_t usPeriod; TIM_DeInit(TIM4); /* 复位TIM2定时器 */ /* TIM2 configuration TIM2CLK = 36 MHz */ if (_ulFreq == 0) { return; /* 采样频率为0,停止采样 */ } else if (_ulFreq <= 100) /* 采样频率小于100Hz */ { usPrescaler = 36000; /* TM2CLK = 72 000 000/36000 = 2000 */ usPeriod = 2000 / _ulFreq; } else if (_ulFreq <= 200000) /* 采样频率 :100Hz - 200kHz */ { usPrescaler = 36 - 1; /* TM2CLK = 36 000 000/36 = 2 000 000 */ usPeriod = 2000000 / _ulFreq; } else /* 采样频率大于 200kHz */ { return; } TIM_TimeBaseStructure.TIM_Period = usPeriod - 1; /* 计数周期 */ TIM_TimeBaseStructure.TIM_Prescaler = usPrescaler; /* 分频系数 */ TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; /* */ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数方向向上计数 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); /* Clear TIM2 update pending flag[清除TIM2溢出中断标志] */ TIM_ClearFlag(TIM4, TIM_FLAG_Update); TIM_SetCounter(TIM4, 0); /* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/ TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); /* TIM2 enable counter [允许tim2计数]*/ TIM_Cmd(TIM4, ENABLE); } //SPI写数据 //向触摸屏IC写入1byte数据 //num:要写入的数据 void SPI_SendData(u16 data) { u8 count=0; AD_SCK_LOW(); //下降沿有效 for(count=0;count<16;count++) { if(data&0x8000) AD_MISO_LOW(); else AD_MISO_HIGH(); data<<=1; AD_SCK_LOW(); AD_CSK_HIGH(); //上升沿有效 } } //SPI读数据 //从触摸屏IC读取adc值 //CMD:指令 //返回值:读到的数据 //u16 SPI_ReceiveData(void) //{ // u8 count=0; // u16 Num=0; // AD_SCK_LOW(); //先拉低时钟 // for(count=0;count<16;count++)//读出16位数据,只有高12位有效 // { // Num<<=1; // AD_SCK_LOW(); //下降沿有效 // AD_CSK_HIGH(); // // if(AD_MISO_IN)Num++; // } // return(Num); //} u16 SPI_ReceiveData(void) { u8 count=0; u16 Num=0; AD_CSK_HIGH(); for(count=0;count<16;count++)//读出16位数据 { Num<<=1; AD_SCK_LOW(); //下降沿有效 if(AD_MISO_IN)Num++; AD_CSK_HIGH(); } return(Num); } /* ********************************************************************************************************* * 函 数 名: ad7606_ReadBytes * 功能说明: 读取AD7606的采样结果 * 形 参: * 返 回 值: 无 ********************************************************************************************************* */ uint16_t ad7606_ReadBytes(void) { uint16_t usData = 0; //// /* Wait until the transmit buffer is empty */ //// while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_TXE) == RESET) //// { //// } // /* Send the byte */ // SPI_I2S_SendData(AD_SPI, 0xFFFF); //// SPI_SendData(0xFFFF); //// /* Wait until a data is received */ //// while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_RXNE) == RESET) //// { //// } /* Get the received data */ //// usData = SPI_I2S_ReceiveData(AD_SPI); usData = SPI_ReceiveData(); /* Return the shifted data */ return usData; } /* ********************************************************************************************************* * 函 数 名: ad7606_IRQSrc * 功能说明: 定时调用本函数,用于读取AD转换器数据 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_IRQSrc(void) { uint8_t i; uint16_t usReadValue; TIM_ClearFlag(TIM4, TIM_FLAG_Update); /* 读取数据 示波器监测,CS低电平持续时间 35us */ AD_CS_LOW(); for (i = 0; i < CH_NUM; i++) { usReadValue = ad7606_ReadBytes(); if (g_tAD.usWrite < FIFO_SIZE) { g_tAD.usBuf[g_tAD.usWrite] = usReadValue; ++g_tAD.usWrite; } } AD_CS_HIGH(); // g_tAD.usWrite = 0; ad7606_StartConv(); } /* ********************************************************************************************************* * 函 数 名: GetAdcFormFifo * 功能说明: 从FIFO中读取一个ADC值 * 形 参:_usReadAdc : 存放ADC结果的变量指针 * 返 回 值: 1 表示OK,0表示暂无数据 ********************************************************************************************************* */ uint8_t GetAdcFormFifo(uint16_t *_usReadAdc) { uint16_t usWrite; DISABLE_INT(); usWrite = g_tAD.usWrite; ENABLE_INT(); if (usWrite != g_tAD.usRead) { *_usReadAdc = g_tAD.usBuf[g_tAD.usRead]; DISABLE_INT(); if (++g_tAD.usRead >= FIFO_SIZE) { g_tAD.usRead = 0; } ENABLE_INT(); return 1; } return 0; } /* ********************************************************************************************************* * 函 数 名: ad7606_StartRecord * 功能说明: 开始采集 * 形 参:_ulFreq : 采样频率, 单位 HZ * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_StartRecord(uint32_t _ulFreq) { //ad7606_Reset(); /* 复位硬件 */ ad7606_StartConv(); /* 启动采样,避免第1组数据全0的问题 */ g_tAD.usRead = 0; /* 必须在开启TIM2之前清0 */ g_tAD.usWrite = 0; bsp_TIM4_Configuration(); /* 配置TIM2定时中断 */ bsp_SET_TIM4_FREQ(_ulFreq); /* 设置采样频率, 并使能TIM2定时采样中断 */ } /* ********************************************************************************************************* * 函 数 名: ad7606_StopRecord * 功能说明: 停止采集 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void ad7606_StopRecord(void) { /* TIM2 enable counter [允许tim2计数]*/ TIM_Cmd(TIM4, DISABLE); } void TIM4_IRQHandler(void) { ad7606_IRQSrc(); } 写个.h文件
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值