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)
최신 정보
Thomas의 훌륭한 답변과 가독성에 대한 내 자신의 의견을 바탕으로 BaseTestFixture 클래스에서 다음을 사용했습니다. 이것이 다른 사람에게 도움이되기를 바랍니다.
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();
}
편집 : 실제로 pack://
체계가 PackUriHelper
클래스 의 유형 이니셜 라이저에 등록 된 것 같습니다 (클래스에서 사용됨 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
'programing' 카테고리의 다른 글
How can I redirect STDERR to STDOUT, but ignore the original STDOUT? (0) | 2020.12.24 |
---|---|
Javascript Engines Advantages (0) | 2020.12.24 |
__init__를 호출하지 않고 클래스를 인스턴스화하는 방법이 있습니까? (0) | 2020.12.24 |
클래스를 선언하지 않고 객체를 생성 할 수 있습니까? (0) | 2020.12.24 |
외래 키의 장고 역방향 조회 (0) | 2020.12.24 |