URIFormatException: 잘못된 URI: 잘못된 포트가 지정됨
아래 URI의 파라미터로 사용되는 어셈블리의 수식 문자열은 XAML에서 동작하지만 코드에서 사용할 경우 표시되는 오류가 나타납니다.
모든 URIKind를 시도해봤는데 같은 결과가 나왔습니다.어떻게 하면 고칠 수 있을까요?
[Test]
public void LargeImageSource_IsKnown()
{
var uri = new Uri(
"pack://application:,,,/" +
"MyAssembly.Core.Presentation.Wpf;component/" +
"Images/Delete.png", UriKind.RelativeOrAbsolute);
Assert.That(
_pickerActivityCollectionVm.DeleteActivityCommand.LargeImageSource,
Is.EqualTo(uri));
}
System.UriFormatException : Invalid URI: Invalid port specified.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
갱신하다
토마스의 뛰어난 답변과 가독성에 대한 저 자신의 코멘트를 바탕으로 BaseTestFilture 수업에서 다음과 같은 것을 사용하게 되었습니다.이게 다른 사람에게 도움이 되길 바라.
protected virtual void OnFixtureSetUp() {
// logging, other one time setup stuff...
const string scheme = "pack";
if (!UriParser.IsKnownScheme(scheme)) {
Assert.That(PackUriHelper.UriSchemePack, Is.EqualTo(scheme));
}
}
그 이유는 당신이 이 코드를 실행하고 있기 때문입니다.pack://
스킴이 아직 등록되지 않았습니다.이 스킴은 다음을 작성할 때 등록됩니다.Application
물건.테스트 고정 장치의 설정에 다음 코드를 추가할 수 있습니다.
[SetUp]
public void Setup()
{
if (!UriParser.IsKnownScheme("pack"))
new System.Windows.Application();
}
EDIT: 사실pack://
스킴은 의 타입 이니셜라이저에 등록됩니다.PackUriHelper
class (실제로 이 클래스는Application
클래스)즉, 실제로 이 명령어의 인스턴스를 생성할 필요가 없습니다.Application
의 스태틱멤버에만 접속하면 됩니다PackUriHelper
유형 이니셜라이저가 실행되었는지 확인합니다.
[SetUp]
public void Setup()
{
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
}
에 액세스 하는 것 같습니다.PackUriHelper.UriSchemePack
등록만 합니다.pack
스킴이 아닌application
스킴을 사용하기 위해 필요했습니다.pack://application:,,,/
구문을 사용합니다.그래서 나는 그 제품을 사용해야만 했습니다.new Application()
두 가지 방식을 모두 등록하는 데 잘 작동했습니다.
Windows Store / WinRT 프로젝트에서 이 오류가 표시되는 경우:
C# 앱에 리소스를 로드할 때 "pack://" 구문을 전혀 사용할 수 없었습니다.ms-appx:// 구문은 다음과 같습니다.
ms-appx://[project folder]/[resource path]
예를 들어 "core" 폴더에서 "styles.xaml"이라는 리소스 사전을 로드하려고 했습니다.이 URI는 나에게 효과가 있었다.
dictionary.Source = new System.Uri("ms-appx:///core/styles.xaml");
WPF라고 기재되어 있는 질문에도 불구하고, 문제는 매우 비슷해 보였지만, 결국 완전히 다른 해결책을 찾게 되어, 찾는 데 시간이 걸렸고, 기존의 답변은 전혀 도움이 되지 않았습니다.
다시 말씀드리지만 이 솔루션은 WPF에는 적용되지 않습니다.
언급URL : https://stackoverflow.com/questions/6005398/uriformatexception-invalid-uri-invalid-port-specified
'source' 카테고리의 다른 글
WPF에서의 이미지 동적 로드 (0) | 2023.04.21 |
---|---|
C#에서 String이 값 유형처럼 동작하는 참조 유형인 이유는 무엇입니까? (0) | 2023.04.21 |
Windows Azure 서비스를 빌드할 때 경로가 너무 깁니다. (0) | 2023.04.21 |
C++에서 int를 문자열로 변환하는 가장 쉬운 방법 (0) | 2023.04.21 |
C# SQL Server Data Types 등가 (0) | 2023.04.21 |