精华内容
下载资源
问答
  • # 米家扩展程序开发入门## 创建米家扩展程序参考[README](README.md)开发新的米家扩展程序这一节。## AndroidManifest.xml文件application下添加米家扩展程序配置和入口* 必须设置model和message_handler,提供米家...

    # 米家扩展程序开发入门

    ## 创建米家扩展程序

    参考[README](README.md)开发新的米家扩展程序这一节。

    ## AndroidManifest.xml文件application下添加米家扩展程序配置和入口

    * 必须设置model和message_handler,提供米家扩展程序运行的米家APP最低API Level版本

    * 米家扩展程序不支持在AndroidManifest中自定义Application入口

    * 米家扩展程序不支持在AndroidManifest中自定义Activity

    * 米家扩展程序不支持自定义style

    ```

    ```

    * 如何获取开发者Id

    打开[米家智能平台](https://open.home.mi.com),点击“开发平台”,然后:

    ![](./md_images/developid_1.jpg)

    ![](./md_images/developid_2.jpg)

    ## 创建MessageReceiver类,继承IXmPluginMessageReceiver,入口函数

    类名必须保持和AndroidManifest.xml中配置message_handler一致

    ```

    public class MessageReceiver implements IXmPluginMessageReceiver {

    public static final String MODEL = "xiaomi.demo.v1";

    @Override

    public boolean handleMessage(Context context, XmPluginPackage xmPluginPackage, int type,

    Intent intent,

    DeviceStat deviceStat) {

    switch (type) {

    case LAUNCHER: {// 启动入口

    XmPluginHostApi.instance().startActivity(context, xmPluginPackage, intent,

    deviceStat.did, MainActivity.class);

    return true;

    }

    default:

    break;

    }

    return false;

    }

    @Override

    public boolean handleMessage(Context context, XmPluginPackage xmPluginPackage, int type,

    Intent intent, DeviceStat deviceStat, MessageCallback callback) {

    // TODO Auto-generated method stub

    return false;

    }

    }

    ```

    handleMessage中除了可以处理LAUNCHER消息外,还可以处理其他类型的消息,这个根据自己的产品需求来进行。目前支持的所有消息类型如下:

    * LAUNCHER

    * 入口消息,APILevel:1

    * PUSH_MESSAGE

    * push消息,APILevel:2

    * MSG\_PAGE\_NAVIGATE

    * 页面跳转,APILevel:3

    * MSG\_BROADCAST\_BLUETOOTH\_DEVICE\_ACTION\_ACL\_CONNECTED

    * 系统蓝牙广播ACL_CONNECTED,APILevel:6

    * MSG\_BROADCAST\_BLUETOOTH\_DEVICE\_ACTION\_ACL\_DISCONNECTED

    * 系统蓝牙广播ACL_DISCONNECTED,APILevel:7

    * MSG\_BLUETOOTH\_PAIRING

    * 蓝牙配对,APILevel:8

    * MSG\_BLUETOOTH\_DISCONNECT

    * 蓝牙断开连接,APILevel:9

    * MSG\_SCENE\_GET\_CONDITION\_EXTRA

    * 获取场景自定义条件中的extra字段,APILevel:10

    * MSG\_UPNP\_CONNECT

    * UPNP设备已连接,APILevel:12

    * MSG\_UPNP\_DISCONNECT

    * UPNP设备连接断开,APILevel:13

    * MSG\_SET\_SCENE\_LARGE\_EXTRA

    * 设置超长场景extra,APILevel:14

    * MSG_BROADCAST

    * 接收broadcast消息,APILevel:15

    * MSG\_UPNP\_EVENT

    * UPNP设备事件,APILevel:16

    * MSG\_NOTIFICATION\_PENDING\_INTENT

    * 通知栏点击事件,APILevel:17

    * MSG\_INIT\_CAMERA\_FRAME\_SENDER

    * 初始化请求通道,APILevel:18

    * MSG\_STAR\_REQUEST\_CAMERA\_FRAME

    * 请求相机数据,APILevel:19

    * MSG\_STOP\_REQUEST\_CAMERA\_FRAME

    * 停止发送数据,APILevel:20

    * MSG\_DESTROY\_REQUEST\_CAMERA\_FRAME

    * 销毁发送通道,APILevel:21

    * MSG\_BLE\_CHARACTER\_CHANGED

    * 注册底层ble蓝牙数据监听,当收到数据时发送此msg给米家扩展程序,APILevel:22

    ## 创建Device继承BaseDevice,封装设备的状态和rpc调用

    * 创建Device类:

    ```

    // 封装设备功能处理

    public class Device extends BaseDevice {

    // 缓存设备状态数据,每次进入不需要立即更新数据

    private static ArrayList DEVICE_CACHE = new ArrayList();

    // 先从缓存中获取Device,并更新DeviceStat

    public static synchronized Device getDevice(DeviceStat deviceStat) {

    for (Device device : DEVICE_CACHE) {

    if (deviceStat.did.equals(device.getDid())) {

    device.mDeviceStat = deviceStat;

    return device;

    }

    }

    Device device = new Device(deviceStat);

    DEVICE_CACHE.add(device);

    return device;

    }

    // 通过did获取Device

    public static synchronized Device getDevice(String did) {

    for (Device device : DEVICE_CACHE) {

    if (did.equals(device.getDid())) {

    return device;

    }

    }

    return null;

    }

    public Device(DeviceStat deviceStat) {

    super(deviceStat);

    }

    }

    ```

    * 在Activity中初始化device

    ```

    Device mDevice = Device.getDevice(mDeviceStat);

    ```

    * Device提供的方法

    ```

    /**

    * 添加状态监听

    *

    * @param listener

    */

    public void addStateChangedListener(StateChangedListener listener);

    /**

    * 移除状态监听

    *

    * @param listener

    */

    public void removeStateChangedListener(StateChangedListener listener)

    /**

    * 设备方法调用

    *

    * @param method 方法名

    * @param param 参数,可以是一个集合Collection子类

    * @param callback 回调结果

    * @param parser

    */

    public void callMethod(String method, Object[] params,

    final Callback callback, final Parser parser) {

    XmPluginHostApi.instance().callMethod(getDid(), method, params, callback, parser);

    }

    /**

    * 设备方法调用

    *

    * @param method 方法名

    * @param param

    * @param callback 回调结果

    * @param parser

    */

    public void callMethod(String method, JSONArray params,

    final Callback callback, final Parser parser) {

    XmPluginHostApi.instance().callMethod(getDid(), method, params, callback, parser);

    }

    /**

    * 设备方法调用

    * API level: 29

    *

    * @param method 方法名

    * @param params

    * @param callback 回调结果

    * @param parser

    */

    public void callMethod(String method, JSONObject params,

    final Callback callback, final Parser parser);

    /**

    * 获取设备固件升级信息

    */

    public void checkDeviceUpdateInfo(final Callback callback);

    /**

    * 返回设备id

    */

    public String getDid();

    /**

    * 返回设备名字

    */

    public String getName();

    /**

    * 返回设备ip

    */

    public String getIp();

    /**

    * 返回设备mac地址

    */

    public String getMac();

    /**

    * 返回model

    */

    public String getModel();

    /**

    * 返回分享设备的parentId

    */

    public String getParentId();

    /**

    * 返回分享设备的parentModel

    */

    public String getParentModel();

    /**

    * 获取绑定标志,BIND_FLAG_UNSET: 0,BIND_FLAG_SET: 1

    */

    public int getBindFlag();

    /**

    * 获取认证标志,AUTH_FLAG_SET: 0,AUTH_FLAG_SET: 1

    */

    public int getAuthFlag();

    /**

    * 是否是子设备,仅支持二级子设备

    */

    public boolean isSubDevice();

    /**

    * 获取当前设备token

    */

    public String getToken();

    /**

    * ApiLevel:10 是否主人设备

    */

    public boolean isOwner();

    /**

    * ApiLevel:10 是否家庭设备

    */

    public boolean isFamily();

    /**

    * ApiLevel:10 是否是分享权限,默认是可以控制

    */

    public boolean isShared();

    /**

    * ApiLevel:10 是否绑定设备,无论哪种权限,主人,分享,家庭都算

    */

    public boolean isBinded2();

    /**

    * ApiLevel:20 是否是只读分享权限,如果设备支持微信分享,必须要检查这个选项,在米家扩展程序中不能让用户控制设备

    */

    public boolean isReadOnlyShared();

    ```

    ## 创建Activity,继承XmPluginBaseActivity

    米家扩展程序内的Activity必须是XmPluginBaseActivity子类,才能被启动

    ## 设置titlebar在顶部透明显示时的顶部padding

    ```

    mHostActivity.setTitleBarPadding(findViewById(R.id.title_bar));

    ```

    ## activiy中需要返回调用结果必须如下调用

    ```

    activity().setResult(RESULT_OK);

    ```

    ## 在米家扩展程序Activity中凡是需要使用Context上下文对象参数的,必须使用activity()

    显示Toast

    ```

    Toast.makeText(activity(), “test”, Toast.LENGTH_SHORT).show();

    ```

    显示Dialog

    ```

    MLAlertDialog.Builder builder = new MLAlertDialog.Builder(activity());

    builder.setTitle("测试Dialog");

    builder.setPositiveButton("Ok", new MLAlertDialog.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    }

    });

    ```

    ## 调用公共设备菜单界面

    ```

    //点击菜单返回界面,需要在onActivityResult接收参数

    ArrayList menus = new ArrayList();

    menus.add("自定义菜单1");

    //点击直接进入下一页

    ArrayList intents = new ArrayList();

    Intent intent = mHostActivity.getActivityIntent(null, SettingActivity.class.getName());

    intent.putExtra("menu", "设置");

    intents.add(intent);

    // 设置自定义菜单

    mHostActivity.openMoreMenu(menus,intents, true, REQUEST_MENUS);

    ```

    默认菜单操作已经封装统一处理,自定义的菜单在Activity接收并处理

    ```

    public void onActivityResult(int requestCode, int resultCode, Intent data)

    ```

    更详细的使用说明见:[API开发文档/公共设备菜单API](API开发文档/公共设备菜单API.md)

    ## 使用plug_common库中MenuDialog控件实现

    ```

    MenuDialog menuDialog = new MenuDialog(activity());

    //设置默认样式

    public void setItems(CharSequence[] items, DialogInterface.OnClickListener listener) {

    this.mItems = items;

    this.onClickListener = listener;

    }

    //设置背景颜色

    public void setBackGroundColor(int color){

    mBackgroundColor = color;

    }

    //设置可定制样式

    public void setMenuAdapter(BaseAdapter adapter){

    mListViewAdapter = adapter;

    }

    ```

    ## 调起创建场景界面

    ```

    mHostActivity.startCreateSceneByCondition(mDevice.getDid(), "device");

    ```

    ## 启动米家扩展程序内Activity

    ```

    startActivityForResult(null, FragmentActivity.class.getName(), 2);

    ```

    或者

    ```

    startActivity(null, SettingActivity.class.getName());

    ```

    ## 米家扩展程序finish 模拟singleTop和回退到设备列表

    ```

    XmPluginBaseActivity.java

    /**ApiLevel:14

    * 按照调用栈一直回退finish,直到lastActivityClass为止,当lastActivityClass为null会一直回退到设备列表

    * @param lastActivityClass

    */

    public void finishParent(String lastActivityClass) {

    }

    ```

    ## 加载native so

    必须用下面的接口加载

    ```

    XmPluginHostApi.instance().loadLibrary(“model”,”h264decoder",

    getClassLoader());

    ```

    ## Fragment继承BaseFragment

    提供下面方法可以使用XmPluginBaseActivity接口

    ```

    public XmPluginBaseActivity xmPluginActivity() {

    return mXmPluginBaseActivity;

    }

    // 米家扩展程序内启动activity

    public void startActivityForResult(Intent intent, String className,

    int requestCode) {

    if (mXmPluginBaseActivity != null) {

    mXmPluginBaseActivity.startActivityForResult(intent, className, requestCode);

    }

    }

    ```

    ## 商城一键购买

    #### 链接参数

    ```

    http://home.mi.com/shop/search?action={search,detail,check}&keyword={keyword}&source={packageName}

    ```

    其中action有三种:

    search表示搜索

    detail表示去商品详情页

    check表示一键购买

    keyword为商品关键字

    source为来源,一般使用包名

    #### 一键购买摄像机实例如下:

    ```

    Uri uri = Uri.parse("http://home.mi.com/shop/search?action=check&keyword=小蚁摄像头 夜视&source=com.xiaomi.smarthome​");

    XmPluginHostApi.instance().gotoPage(activity(), mPluginPackage, uri, null);

    ```

    一键复制

    编辑

    Web IDE

    原始数据

    按行查看

    历史

    展开全文
  • 在提升一台服务器服务器域控制服务器时,先决条件检查报错,内容如下: 查看本地事件查看,没有错误内容. 于是登陆与控制检查. 打开ActiveDirectory站点和服务. Default-First-Site-Name下的Servers显示...

    在提升一台服务器为服务器为域控制服务器时,先决条件检查报错,内容如下:

    查看本地事件查看器,没有错误内容.

    于是登陆与控制器检查.

    打开ActiveDirectory站点和服务.

    Default-First-Site-Name下的Servers显示有2个与控制服务器.其中一个就是我登陆的这台(DC1).另一台前两天坏掉了(DC2).

    尝试删除已经不存在的那台DC2,不允许.点开DC2,其下有一个NTDS Settings,删除它.再尝试删除DC2,成功.

    再次尝试去提升服务器为新的域控制服务器.成功.

    总结:原有的域控制服务器如果已经在物理上不存在了,但没有在域中被移出,那么增加新的域控制服务器会出现如上错误.

    展开全文
  • 原标题:Python扩展库安装与常见问题解决完整指南“Python小屋”编程比赛正式开始《Python程序设计(第3版)》, (ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年1月第6次印刷1 基本...

    原标题:Python扩展库安装与常见问题解决完整指南

    “Python小屋”编程比赛正式开始

    《Python程序设计(第3版)》, (ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年1月第6次印刷

    1 基本概念

    包、库、模块是Python 中常用的概念。一般来说,模块指一个包含若干函数定义、类定义或常量的Python 源程序文件,库或包指包含若干模块并且其中一个文件名为__init__.py 的文件夹。对于包含完整功能代码的单个模块,叫作库也可以,例如标准库re 和re模块这两种说法都可以。但一般不把库叫作模块,例如tkinter库包含若干模块文件,此时一般说标准库tkinter而不说tkinter模块。

    在Python 中,有内置模块、标准库和扩展库之分。内置模块和标准库是Python官方的标准安装包自带的,内置模块没有对应的文件,可以认为是封装在Python 解释器主程序中的;标准库有对应的Python程序文件,这些文件在Python安装路径中的Lib文件夹中。如图1中1、2、3所示。

    a6330f627e501aa28d7d79c70d3d2b3d.png

    图1内置模块、标准库、扩展库的区别

    Python 官方的标准安装包自带了math (数学模块)、random(随机模块)、datetime(日期时间模块)、collections(包含更多扩展版本序列的模块)、functools(与函数以及函数式编程有关的模块)、urllib(与网页内容读取以及网页地址解析有关的模块)、itertools(与序列迭代有关的模块)、string(字符串操作)、re(正则表达式模块)、os(系统编程模块)、os.path(与文件、文件夹有关的模块)、zlib(数据压缩模块)、hashlib(安全哈希与报文摘要模块)、socket(套接字编程模块)、tkinter(GUI编程模块)、sqlite3(操作SQLite数据库的模块)、csv(读写CSV文件的模块)、json(读写JSON文件的模块)、pickle(数据序列化与反序列化的模块)、statistics(统计模块)、time(时间操作有关的模块)等大量内置模块和标准库(完整清单可以通过官方在线帮助文档https://docs.python.org/3/library/index.html进行查看),但没有集成任何扩展库,程序员可以根据实际需要再安装第三方扩展库。

    截至2021 年1月,pypi 已经收录了超过28万个扩展库项目,涉及很多领域的应用,例如jieba (用于中文分词)、moviepy(用于编辑视频文件)、xlrd(用于读取Excel 2003之前版本文件)、xlwt(用于写入Excel 2003之前版本文件)、openpyxl(用于读写Excel2007及更高版本文件)、python-docx(用于读写Word 2007及更新版本文件)、python-pptx(用于读写PowerPoint 2007及更新版本文件)、pymupdf (用于操作PDF文件)、pymssql (用于操作Microsoft SQLServer数据库)、pypinyin(用于处理中文拼音)、pillow(用于数字图像处理)、pyopengl(用于计算机图形学编程)、numpy(用于数组计算与矩阵计算)、scipy(用于科学计算)、pandas(用于数据分析与处理)、matplotlib(用于数据可视化或科学计算可视化)、requests (用于实现网络爬虫功能)、beautifulsoup4(用于解析网页源代码)、scrapy (爬虫框架)、sklearn(用于机器学习)、PyTorch、tensorflow(用于深度学习)、flask、django(用于网站开发)等几乎渗透到所有领域的扩展库或第三方库。

    2 安装扩展库

    Python 官方提供的安装包只包含了内置模块和标准库,没有包含任何扩展库,开发人员可以根据实际需要再安装和使用合适的扩展库,成功安装之后扩展库文件会存放于Python 安装路径的Libsite-packages文件夹中,如图1中4、5、6所示。Python 自带的pip工具是管理扩展库的主要方式,支持Python扩展库的安装、升级和卸载等操作。pip命令需要在命令提示符环境中执行,在线安装扩展库的话需要计算机保持联网状态,该命令常用方法如表1所示,可以在命令提示符环境执行命令“pip -h” 查看完整用法。

    表1 常用pip 命令使用方法

    pip 命令示例

    说明

    pip freeze

    列出已安装模块及其版本号

    pip install SomePackage[==version]

    在线安装 SomePackage模块,可以指定扩展库版本,如果不指定则默认安装最新版本,使用时把 SomePackage替换为实际的扩展名名称,例如jieba、pillow、pypinyin

    pip install SomePackage.whl

    通过whl 文件离线安装扩展库

    pip install --upgrade SomePackage

    升级 SomePackage模块到最新版本

    pip uninstall SomePackage

    卸载SomePackage 模块

    如果使用Anaconda3 的话,除了pip之外,也可以使用conda命令安装、更新和卸载Python扩展库。命令conda支持clean、config、create、info、install、list、uninstall、upgrade等子命令,可以使用命令“conda -h”查看具体用法。在开始菜单中依次打开“Anaconda3(64bit)”==>“Anaconda Prompt(Anaconda3)” ,如图1-15 中箭头3 所示。进入Anaconda命令提示符环境,执行conda命令管理扩展库即可。

    并不是每个扩展库都有相应的conda版本,如果遇到conda无法装的扩展库,进入Anaconda Prompt(Anaconda3)命令提示符环境使用pip安装之后一样可以在Anaconda3的Jupyter Notebook和Spyder环境中使用。如图2所示。

    35ca30d3516851f1077012777a1bfc63.png

    图2使用pip 命令为Anaconda3安装扩展库

    3 常见问题与解决方法

    很多初学者由于不熟悉环境搭建尤其是扩展库的安装,浪费了大量宝贵时间。本节简单介绍一下安装扩展库过程中常见的几种问题以及相应的解决方法。

    (1 )在线安装失败

    如果在线安装扩展库失败,一定要仔细阅读错误信息,这对于解决问题是至关重要的。只有准确地知道发生了什么错误,才有可能找到正确的解决方法。

    在线安装失败最大的可能有三个:1 )网络不好导致下载失败,2 )需要本地安装有正确版本的VC++ 编译环境,3 )扩展库暂时还不支持自己使用的Python 版本。对于第一种错误,可以多尝试几次、指定国内源或下载whl 文件离线安装。如果出现第二种错误,可以在本地安装合适版本的VC++ 编译器或者下载whl 文件离线安装。对于第三种错误,可以尝试找一下有没有第三方编译好的whl 文件可以下载然后离线安装。

    在Windows 平台上,可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载大量第三方编译好的.whl格式扩展库安装文件,如图3所示。此处要注意,一定要选择正确版本(文件名中有cp38 表示适用于Python 3.8,有cp37表示适用于Python 3.7,以此类推;文件名中有win32表示适用于32位Python,有win_amd64表示适用于64位Python),并且不要修改下载的文件名。

    056f6b32c796ab458eb428be03b73179.png

    图3下载合适版本的whl 文件

    然后在命令提示符或PowerShell 环境中使用pip 命令进行离线安装,指定文件的完整路径和扩展名,例如:

    pip install psutil-5.6.7-cp38-cp38-win_amd64.whl

    在PowerShell 环境中,如果要执行当前目录下的程序,需要在前面加一个圆点和一个斜线,例如在Python 安装路径中s 文件夹中执行上面的命令需要改成下面的格式:

    ./pip install psutil-5.6.7-cp38-cp38-win_amd64.whl

    如果由于网速问题导致在线安装速度过慢的话,pip 命令支持指定国内的站点来提高速度,下面的命令用来从阿里云服务器下载安装扩展库jieba ,其他服务器地址可以自行查阅。

    pip install jieba -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

    如果固定使用阿里云服务器镜像,可以在当前登录用户的AppDataRoaming 文件夹中创建文件夹pip,在pip文件夹中创建文件pip.ini,输入下面的内容,以后再执行pip命令安装和升级扩展库时就不用每次都指定服务器地址了。

    [global]

    index-url = http://mirrors.aliyun.com/pypi/simple

    [install]

    trusted-host = mirrors.aliyun.com

    如果遇到类似于“ 拒绝访问”的出错提示,可以使用管理员权限启动命令提示符,或者在执行pip命令时在最后增加选项“--user”。

    (2 )安装路径带来的问题

    很多初学者会遇到这样的问题:使用pip 安装扩展库时明明提示安装成功,使用pip list 或pip freeze 查看扩展库清单里也有,但在Python 开发环境中却一直提示不存在。这样的问题基本上可以肯定是安装路径和使用路径不一致造成的。

    注意,如果计算机上安装了多个版本的Python 开发环境,在一个版本下安装的扩展库无法在另一个版本中使用。为了避免因为路径问题带来困扰,强烈建议在命令提示符或PowerShell 环境切换至相应版本Python 安装目录的s文件夹中,然后执行pip命令,如果要离线安装扩展库的话,最好也把.whl文件下载到相应版本的s文件夹中。简单地说,想在哪个版本的Python 中使用扩展库,就到哪个版本的Python安装路径中的s子文件夹中安装扩展库,这样可以最大程度地减少错误。

    (3 )扩展库自身bug 或版本冲突问题

    虽然现在这种情况已经越来越少遇到了,但确实还会偶尔发生。不管是多牛的程序员,写出来的代码都有可能会存在bug ,这是正常的,Python也不例外。某些扩展库在升级过程中解决原来问题的同时又引入了新的错误,导致某些功能在旧版本中工作正常但在新版本中却无法使用。如果遇到类似的情况,可以查一下扩展库的官方网站的最新消息,或者暂时还原较低的版本,如果水平足够的话也可以自己修改一下扩展库的代码再使用。

    编写Python 程序时,尤其是使用了扩展库的程序,还可能会遇到的一种情况是,升级扩展库以后原来的程序无法运行了,提示某些属性或方法不存在。这是因为新版本扩展库不再支持原来的用法,这时需要查一下这个扩展库官方网站的更新历史,找到最新的用法然后修改自己的代码。

    ,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过115次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1000篇原创技术文章;发送消息“会议”或“培训”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过500节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习1318道客观题和176道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。返回搜狐,查看更多

    责任编辑:

    展开全文
  • win7 IIS 配置和ASP.NET的运行配置控制面板中“程序”的位置 选择左边的打开或关闭Windows功能如图,安装IIS7时需要选择要使用的功能模块安装好IIS打开IIS管理如图点击上面的iisStart.html得到下面的界面 到这里...

    win7 IIS 配置和ASP.NET的运行配置

    控制面板中“程序”的位置 选择左边的打开或关闭Windows功能

    如图,安装IIS7时需要选择要使用的功能模块

    安装好IIS打开IIS管理器如图

    点击上面的iisStart.html得到下面的界面 到这里IIS并没有完成

    因为现在如果配置asp.net项目上去的话,会出现很多问题 如访问数据库权限问题

    下面的这个步骤是设置访问数据库权限的

    这里选择localSystem或NetworkService

    默认装完IIS7之后,使用ASP程序会发现提示数据库连接失败,在网上找了找,说是因为MSJet引擎改变了临时目录的位置,但是又没有对临时的存取权限,导致数据库使用失败。

    先要设置应用程序池(ApplicationPool)为Classic.NETAppPool,而不是默认的DefaultAppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置。选择好要设置的站点之后,点右边的“基本设置”即可调出应用程序池设置对话框。

    这里必须用操作系统的登录名和密码 不然无权访问硬盘分区

    这里的第二行显示授权就是因为上面的步骤给了用户名和密码 否则这里就是无权 asp.net的页面也就访问不到了

    然后再给“系统盘:Windows\ServiceProfiles\NetworkService\AppData\Local”下面的 Temp目录添加一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。

    设置权限步骤:右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编辑”》出来“Temp的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入Authenticated Users,确定》返回到“Temp的权限”,将AuthenticatedUsers的权限中的完全控制给勾上,确定》确定。

    启用父路径支持

    在站点主页上选择“ASP”,然后在“行为”组中将“启用父路径”设置为True即可。

    (这里我个人认为可以改也可以不改 看你自己的情况而定(本人没改一直是False))

    至此,完成了Windows7中IIS7的安装及使用asp.net的配置。

    我在部署asp.net项目是出现了很多错,在网上查了很多资料,用了2天多才搞出来,大家装这个要耐心,多搜索下网上的结果,基本的问题都是可以解决的

    取消

    评论

    展开全文
  • Adobe 更新到了 CC 2019版本以后,各种好用的插件、滤镜、扩展功能也陆续开始了更新,问题来了,也许适配新版出现了兼容问题,加载插件提示无法加载扩展,因为它未正确签署,具体什么原因,咱也不知道,咱也不敢问,...
  • 使用C/C++扩展Python

    2020-12-23 11:53:27
    利用扩展模块可做很多Python不方便做的事情,他们可以直接调用C库和系统调用。为了支持扩展,Python API定义了一系列函数、宏和变量,提供了对Python运行时系统的访问支持。Python的CAPI由C源码组成,并包含“Python...
  • 关于vs2019安装不了扩展问题的解决方法安装QT时在VS2019扩展里面下载QT工具时下载就一直卡在开始,如图:网上搜索的一些改host和关ipv6的方法试了之后也没有用后来发现点右边的详细信息能够直接跳转到微软的介绍页上,...
  • Kubernetes 有哪些扩展点?Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且...
  • 这两种文件验证方式的优缺点是什么?而且,我应该关注其他任何安全问题吗?这些天来,我一直依靠MIME类型,但是这篇文章中投票最多的答案是File upload issues in PHP说:永远不要依赖浏览器提交的MIME类型!参考...
  • 来源:juejin.cn/post/6954378167947624484关于重构为什么要重构1_代码重构漫画.jpeg项目在不断演进过程中,代码不停地在堆砌。如果没有人为代码的质量负责,...
  • k8s-集群扩展

    2021-10-28 11:32:32
    k8s-集群扩展 1 k8s有哪些扩展点? kubernetes具备高可配、高扩展特性。自定义kubernetes集群大体上也分成两个方向,一个是配置,一个是扩展。配置又分成修改配置文件、标志与API resources两个小方向,扩展需要运行...
  • 扩展点整体架构 1. RPC层扩展点 按照完整的Dubbo结构分层,RPC层可以分为四层:Config、Proxy、Registry、Cluster。由于Config属于API范畴,因此只关注Proxy、Registry、Cluster三层的扩展点。 1.1 Proxy层...
  • Dubbo-SPI系列文章目录 ...文章目录Dubbo-SPI系列文章目录RPC层扩展点Proxy(代理)层扩展点Registry(注册)层扩展点Cluster(集群)层扩展点Cluster扩展点RouterFactory(路由)扩展点LoadBalance扩展点Conf
  • chrome 扩展学习

    2021-01-13 20:24:00
    对于现在开发 Chrome 扩展来说,是非常简单的一件事情,其只需要使用 JavaScript 即可开发,并且 Chrome 官方对你如何开发 Chrome 扩展程序并没有严格要求, 只需要在你项目的根目录保证存在 mainfest.json 文件即可...
  • 本篇文章介绍一种方法,通过 Python 的 C扩展程序,来提高运行性能。Python 最受欢迎的解释是 CPython,是C语言编写。所以 Python 和 C语言本身有很好的兼容性,二者也可以互相调用。接下来就分...
  • dubbo-扩展点-01

    2021-07-21 11:24:30
    本篇文章讲一下我学习SPI的过程,至于为什么一上来就需要会这个玩意,说实话我也不知道,只是自己在看源码的时候冥冥之中觉得应该先看这个,至于和spring的扩展整合,暂时先不关心了,知道spring会把该做的做了就行...
  • 但是事后我查了一下,发现unittest并没有这种机制,要是需要的话只能自己修改源码(最近在看这部分的源码,下次可以整理下这种方式来实现),所以我想到的第二个方法就是使用装饰了。 思路很简单,可以概括...
  • 近期,处理一个oracle for windows数据库故障,前期场景是:操作员由于在sqlplus中执行move命令移动数据库到新的表空间来消除碎片,但是执行时间长,操作员以为是命令死掉了,就取消掉,没想到取消一直卡着,操作员...
  • Zotero是一款开源的文献管理软件,笔者在使用Endnote遇到了无法处理的bug(使用Seafile云盘同步失败后,参与同步的三台本地计算机和云盘均失去了全部的论文item信息,且无法恢复),同时也忍受不了Endnote的卡、慢、...
  • Megastore 是满足当今交互式在线服务的要求而开发的存储系统。Megastore 以一种新颖的方式将NoSQL数据存储的可扩展性与传统关系数据库管理系统的便利性相结合,并提供了强大的一致性保证和高可用性。我们在数据的...
  • Chrome扩展开发总结

    2021-04-09 00:08:56
    一个插件,必须都含有这个一个文件——manifest.json,这是一个扩展的组成清单。 { “update_url”: “http://chenye2000.top”, “name”: “Hashcash”, “version”: “2.1.0”, “manifest_version”: 2, ...
  • 手把手教你开发composer扩展包,搭建thinkphp个人博客(一)写在前面由于最近需要用到thinkphp6开发,之前也是处于了解阶段,借此机会来学习一些框架的知识,这也算是我学习扩展包开发的笔记吧。本系列文章将从零开始...
  • oracle包写入程序失败

    2020-12-18 20:37:33
    Oracle安装和创建建实例安装数据库的时候没有完全成功,首先是提示 “ORA-12571:TNS包写入程序失败”然后是一个组件没有安装成功,一直停留在那“Agent Configuration Assistant”这个地方在EMC登陆使用system/...
  • 在做一些项目的时候,我们经常会遇到IO口不够用的情况,那么我们该如何扩展IO口呢,我的想法是再增加一块主控板作为附属,比如以esp32作为主控,arduino nano作为附属,附属的nano通过IO口获取各种数据,再通过串口...
  • 自己在阿里呆了四年目前是P6,感觉遇到了瓶颈P7一直上不去,这才我绝对跳槽到字节试试 面试准备 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不...
  • 本篇将以实战主,原理辅的方式,本着全面、最少改动的原则去对 Spring Security OAuth2 授权模式的扩展,本篇涉及内容如下: Spring Cloud Gateway 微服务网关WebFlux整合谷歌验证码 Kaptcha; SpringBoot ...
  • 七、如何获得 Art Blocks 艺术品 什么是生成艺术NFT,Art Blocks为什么能持续霸榜? 深链财经 2021-09-02 18:25:21 生成艺术平台 Art Blocks 的前世今生。 9月2日 Opensae 最近交易数据显示,Art Blocks 截至目前的...
  • 如果网桥上的以太网接口或集线或交换机上的端口设置自动速度或自动双工,请改指定速度和双工设置。在两台设备上配置相同,然后尝试再次ping站点的本地网桥。 对远程站点的远程网桥执行ping操作。 成功的应答...
  • PHP 7安装调试工具Xdebug扩展的方法教程前言说到PHP代码调试,对于有经验的PHPer,通过echo、print_r、var_dump函数,或PHP开发工具zend studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,416
精华内容 40,966
关键字:

为什么扩展器一直扩展失败