首页 > 解决方案 > “您需要打开一个新应用程序......”运行 Sharepoint 2016 应用程序的本地主机

问题描述

从 VS2019(调试模式)运行 SharePoint 2016 应用程序时,我转到 IE 11 中的“站点设置”,然后单击我的链接。当我这样做时,我得到了这个

在此处输入图像描述

如果我单击“允许”,我会看到另一个弹出窗口,说明“您需要一个新应用程序才能打开 localhost ”。我阅读了这篇文章,发现该页面更有可能抱怨 url 没有正确形成,但这与该页面曾经拥有的链接相同(http://localhost/ /)。我不知道为什么会这样。

该页面是一个带有 Sharepoint 和 AngularJS 的普通 aspx 页面:

<%@ Assembly Name="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Page Language="C#" MasterPageFile="~masterurl/default.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage" meta:progid="SharePoint.WebPartPage.Document" meta:webpartpageexpansion="full" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint" %>

<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
     <script src="/_layouts/packages/angular.1.6.9/angular.min.js"></script>

     <script>
        var app = angular.module('my-app', []);

        angular.element(function () {
            document.getElementById("myFrame").src = document.location.protocol == "http:" ?
            document.location.hostname + ':8368/Pages/mypage.aspx?' + window.location.search.substr(1) :
            document.location.hostname + ':8268/Pages/mypage.aspx?' + window.location.search.substr(1);
        });


    </script>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <body class="flex-container">
        <div>
            <iframe style="width:100%; height:850px" frameborder="0" id="myFrame"></iframe>
        </div>
    </body>
</asp:Content>

这基本上有两个页面 - 一个用于 http 和 https。这些被加载到 iframe 中(出于一个无关紧要的充分理由)。然后我的内容页面被加载:

<!DOCTYPE html>

<script src="/Scripts/jquery/jquery-1.12.4.min.js"></script>

<link rel="stylesheet" href="/Content/kendo/kendo.bootstrap.min.css" />
<link rel="stylesheet" href="/Content/kendo/kendo.common.min.css" />
<link rel="stylesheet" href="/Content/kendo/kendo.common-bootstrap.core.min.css" />
<link rel="stylesheet" href="/Content/kendo/kendo.common-bootstrap.min.css" />

<script src="/Scripts/kendo/kendo.all.min.js"></script>

<link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/bootstrap/bootstrap.min.js"></script>

<script src="/Scripts/angular/angular.js"></script>
<script src="/Scripts/angular/angular-touch.js"></script>
<script src="/Scripts/angular/angular-animate.js"></script>


<link rel="stylesheet" href="/Content/Page.css" />

<style>
    .k-button {
        margin: 0 10px 0 0;
    }
    ::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
        color: gray;
        opacity: 0.7; /* Firefox */
    }

    :-ms-input-placeholder { /* Internet Explorer 10-11 */
        color: gray;
        opacity: 0.7; 
    }

    ::-ms-input-placeholder { /* Microsoft Edge */
        color: gray;
        opacity: 0.7; 
    }
    .k-textbox {
        width: 100%;
    }
</style>

页面详情

它没有走这么远,但我发布它只是为了提供上下文。主要问题是为什么我收到一条消息说我需要一个应用程序来运行本地主机。

标签: htmlasp.netangularjsvisual-studio-2017sharepoint-2016

解决方案


答案是我没有在我的页面 URL前添加“ document.location.protocol ”。应该是 ' document.location.protocol + '//' + document.location.hostname + ':8268/Pages/mypage.aspx?' + window.location.search.substr(1); "


推荐阅读