在 IIS 上发布时无法加载 Blazor webassembly 应用程序
Unable to load a Blazor webassembly application when published on IIS
在使用本地 IIS 和 Visual Studio 的开发笔记本电脑上一切正常。在我通过 Azure Devops 发布应用程序的服务器上,Blazor 应用程序无法加载并出现此 javascript 错误
System.ArgumentException: The URI 'http://10.144.2.7/SincroADR_Api/' is not contained by the base URI 'http://10.144.2.7/SincroADR_API/'.
在 Blazor 客户端应用程序的 index.html 上,我有这个基础 url
<base href="/SincroADR_API/" />
SincroADR_API是一个.Net Core 3.1 Web Api项目,IIS服务器是7.5版(Win 2k8 R2),IIS本地是10(Win 10)。
所有 Blazor 文件(js、webassembly)都在浏览器上正确下载,但我不明白为什么它在本地 IIS 中工作。有什么想法吗?
base 标签中的 href 属性必须匹配请求的 URL 的相应部分,包括符号的大小写。如果您查看错误消息,请求的 URL 的“_Api”部分与基本 href 的“_API”部分不匹配。
这是一个非常不方便的错误。您可以通过修改基本 href 以匹配用于导航到您的应用程序的 URL 来解决此问题。
在 wwwroot/index.html 文件中,将以下脚本放在 blazor webassembly include 之前:
<script>
let baseTag = document.getElementsByTagName('base')[0];
let baseHref = baseTag.getAttribute('href');
let href = window.location.pathname.substr(0, baseHref.length)
if (!href.endsWith('/')) href += '/';
baseTag.setAttribute('href', href);
</script>
在使用本地 IIS 和 Visual Studio 的开发笔记本电脑上一切正常。在我通过 Azure Devops 发布应用程序的服务器上,Blazor 应用程序无法加载并出现此 javascript 错误
System.ArgumentException: The URI 'http://10.144.2.7/SincroADR_Api/' is not contained by the base URI 'http://10.144.2.7/SincroADR_API/'.
在 Blazor 客户端应用程序的 index.html 上,我有这个基础 url
<base href="/SincroADR_API/" />
SincroADR_API是一个.Net Core 3.1 Web Api项目,IIS服务器是7.5版(Win 2k8 R2),IIS本地是10(Win 10)。
所有 Blazor 文件(js、webassembly)都在浏览器上正确下载,但我不明白为什么它在本地 IIS 中工作。有什么想法吗?
base 标签中的 href 属性必须匹配请求的 URL 的相应部分,包括符号的大小写。如果您查看错误消息,请求的 URL 的“_Api”部分与基本 href 的“_API”部分不匹配。
这是一个非常不方便的错误。您可以通过修改基本 href 以匹配用于导航到您的应用程序的 URL 来解决此问题。
在 wwwroot/index.html 文件中,将以下脚本放在 blazor webassembly include 之前:
<script>
let baseTag = document.getElementsByTagName('base')[0];
let baseHref = baseTag.getAttribute('href');
let href = window.location.pathname.substr(0, baseHref.length)
if (!href.endsWith('/')) href += '/';
baseTag.setAttribute('href', href);
</script>